gluProject gives you vertex->screen (useful for crosshairs)
gluUnproject gives you screen->vertex (useful for cursors)
both need the viewmodel and projection matricies
so if you want to find what 3d object the user just clicked on, unproject(x,y,0) and unproject(x,y,1), trace a line between them, see what the trace hit.
you can either google the specific formulas that glu uses, or you can rip Matrix4x4_CM_UnProject/Matrix4x4_CM_Project from FTE or qrack or whatever other engines it got copied to. presumably dp has some equivelent somewhere.