A lot depends on the size of the FIFO. Some PIC UARTS, for example, have a 2 or 3 byte FIFO. But, if receiving 8 bytes into that FIFO, one has to read the bytes as they come in (before the FIFO gets full), else it will overflow. Usually there is a flag for FIFO overflow. Small FIFO are to allow the program some time to respond to an interrupt or "receive" flag and read the fifo until empty (like you assume). Then, if more data comes in, it simply starts adding to the FIFO again and sets a flag that there is data received again.
If the FIFO is bigger than the expected received data, you don't need to worry about overflow. But, this is not common, most FIFO are simply limited buffers to allow time for processing of data without losing a byte or two.
Every byte that goes into the FIFO increments the FIFO counter, and every byte you read from the bottom decreases the FIFO counter. One reads the FIFO until the counter hits zero. Before reading anything, always check the overflow flag, because if that is set, it is too late, you missed data