If we are talking about 256color256 or 16 color VGA modes then they are not 256 or 16 colors really but 2^(6+6+6) = 2^18 = 262144
color depth but can use only 256 or 16 different colors in single frame (without additional techniques).
To convert truecolor/higcolor images into 8bit indexed ones there are 2 basic approaches:
which can be combined together to get even better results.
On top of that some HW platforms allows to break the designed limits and improve things like increase resolution or even color depth ...
for example on ZX: multitech , or double y resolution by switching frames (I did that a lot)...
on PC: there was UniVBE that could provide better resolution even hi/true color depth on old 256 color cards (I remember my 256c Trident did work well in high color as the 6bit DACs had to be there anyway) just by exchanging VGA BIOS with their own (you just started it in autoexec.bat and that was it)...
The frame switching method is applicable on VGA too as human eye integrates color (its like dithering but in time instead of space).
Palette based sprite engines could do similar stuff to this
Here another example of (ordered) dithering going to extremes on B&W low resolution displays I am using on MCUs for 3D polygonal rendering