Okay I haven't looked at what you're drawing too closely, but keep in mind that the (X,Y) coordinates reported by a glut mouse click callback are in screen coordinates, not in world (OpenGL) coordinates. So your OpenGL might call gluPerspective and treat the whole screen as going from (-1,1) on the X and (-1,1) on the Y, or some such, but if your glut window is SW by SH (450x450) then in the click callback, you're going to get X coordinates in [0,450) and Y coordinates in [0,450).

You may need to convert between the two. You can do simple multiplication or, for 3D, unprojection (where the Z coordinate is determined by the Z buffer).

Now, as for text, you can draw a simple bitmap font, which is easiest: NeHe Productions: Bitmap Fonts
Or you can draw an actual truetype font with a library like FreeType: NeHe Productions: FreeType Fonts in OpenGL

It's actually quite a pain getting fonts to work in OpenGL, you may want to search for libraries compatible with glut which add font support for you. Actually, if you're using freeglut instead of the original glut, there is built-in text support with a bitmap font: graphics - How do I draw text with GLUT / OpenGL in C++? - Stack Overflow
And if you're still using the original glut, freeglut should be a drop-in replacement.