Thankyou,
Looking back with hind-sight question (2) was kinda dumb since I know OpenGL is a state machine and will keep the state set with DepthFunc().
Was checking this 'ol link, always do when I am not sure:
http://www.opengl.org/wiki/Common_Mistakes, section
Disable depth test and allow depth writesIt said: "The correct solution is to tell GL to ignore the depth test results with glDepthFunc(GL_ALWAYS)"
So I replaced my calls of
glDisable(GL_DEPTH_TEST) and
glEnable(GL_DEPTH_TEST) to
glDepthFunc(GL_ALWAYS) and
glDepthFunc(GL_LESS) respectively. Same results HUD and text still on top of everything which is good, but still feel that mucking about with OpenGL functions like that in the game loop might cause a small performance hit, but can't think of anything else.