Yep, that through me for a loop too. I discovered the MSDN info on glTexImage2D was not very precise. For example the MSDN info says this:
const GLvoid *pixels
The number of color components in the texture. Must be 1, 2, 3, or 4.
That turns out to be false, or at best a half truth.
For for 32 bpp use 1,2,3, or 4. For 16 bpp use GL_RGBA4, GL_RGB5, or GL_RGB5_A1.
RGBA4 is (4,4,4,4), RGB5 is (5,5,5) and RGB5_A1 is (5,5,5,1). I didn’t notice a (5,6,5) constant available.
I found a better explanation (and a whole lot more constants) in a pdf file titled opengl1.2.1.pdf . I think I downloaded it from the home page of opengl.org or somewhere nearby.