i worked at s3 and did some of the original work on that at one point, so just figure i mention a few things:
1. although 565 is the most common format, there is also 1555 and 4444 with alpha
2. although the most common compression is two endpoints and two mid points (at 1/3 and 2/3), there is also a format with two endpoints and one mid point (at 1/2).
3. it might be the simplest way to experiment with this is to use d3d calls to test out the compressions once you have the file loaded. (see msdn dx texture section).
4. I did a quick search and manage to find a much modified doc of what i had wrote originally at microsoft at:
also there is a text version of the attempt to get this into OGL at
hope that helps