u generally use a FIFO when the clock rates on either side are different, simply put FIFO is used for rate matching.
In ur case the CPU may generate pixels at a fast rate, but ur VGA controller may be slower than CPU (takes lesser no of pixels at a time). This may lead to some pixels to be lost. To avoid this FIFO is placed in between. CPU will dump the generated pixels in the FIFO and VGA controller will progressively take from FIFO.
usually ur cpu is faster than ur vga controller, if its the oter way around then VGA controller shall not be able to get the required no of pixels for display. In that case sometimes lowering the resolution may help.