You keep multiplying glulookat matrices on the modelview with no push pop, right ath the end, and no load identity on the modelview so it’s not surprising you don’t see anything after the first rendering.
I think the problem is simpler (once you’ve been there your self a couple of times). Do you call glutPostRedisplay? After you draw each frame not only do you have to swap the buffers but tell glut that the display needs to be redrawn. A good place for it would be right under glutSwapBuffers();
This applies for both model and projection. So if you are drawing multiple objects in a scene, you remember where you are (push), move to the new location, draw your stuff, and return to where you were (pop), then continue on.
With Projection, if you have multiple viewports or something along those lines, or are drawing 2d text on the screen, you want to remember your screen settings (push), setup your new view, draw the new stuff, and return to the old view (pop)