If you want to address the screen using pixel coordinates you'll need to look into Ortho mode. This flattens out the perspective so you have a coordinate system that exactly matches the screen pixel for pixel.
in GLApp.java the glPrint() function calls setOrthoOn, which switches to Ortho mode. glTranslate() moves to the screen location where the text will be drawn. You can then call glRotate to rotate the text around the Z axis. Here's a snip of code from the glPrint() function with a glRotate call added:
// enable the charset texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, fontTextureHandle);
// prepare to render in 2D
setOrthoOn();
// Position The Text (in pixels coords)
GL11.glTranslatef(x, y, 0);
// Rotate 45 degrees around Z axis
GL11.glRotatef(45, 0,0,1);
// draw the characters
for(int i=0; i<msg.length(); i++) {
GL11.glCallList(offset + msg.charAt(i));
}
// restore the original positions and views
setOrthoOff();
You're right though, OpenGL is designed for drawing 3D shapes, not text, so you've started with one of the trickier areas.