Latches are used in designs for specific purposes. Often, the use of latches is considered "bad practice" in a synchronous design (and synthesis tools will often give you warnings when latches are inferred).
However, latches are still important. As an example of where you might use one, consider a microprocessor. As it comes out of reset it samples the value on one of its input pins, and uses this to determine what external bus width to use. You can't do this with flip-flops, as there is no clock. A level sensitive latch is required.
Another use of latches is in interrupt controllers, where interrupts might be either edge-sensitive or level-sensitive.
Siskin