OK ... time for another OpenGL lesson.
There are 3 matrixes in OGL: Modelview, Projection and Texture.
The Modelview is the one you're familiar with; it holds rotations, translations, scalings, and so on, that are applied to any points (polygons) you draw - ie. glVertex commands.
The Texture matrix does exactly the same thing, but for texture coordinates (glTexCoord commands). It's not used very often of course, because it's fairly rare that you need to change texcoords at all, never mind do anything fancy like translate or rotate them. Nevertheless, the matrix IS still there if you need it.
The Projection matrix affects points, like the Modelview matrix, but in a different way. The Projection matrix basically sets how the final image is "projected" onto the 2D screen window.
So, one thing the projection matrix is used for, is setting how "wide" the field of view for the scene is. Also, the "aspect ratio" of the display - you can use that to stretch out the display up or sideways. It's also related to, for example, how many "units" wide and high you can see on the screen at once. For example, if you draw a point at (1,0,1), will that appear *just* to the right of middle, or over on the far right of the screen? That's the sort of thing it controls. A *bit* like a "zoom" control.
Finally, the projection matrix ALSO controls the depth clipping planes. In other words, how far away an object has to be before it's totally ignored and not drawn - also, how CLOSE to the "camera" an object has to be before it's ignored and not drawn.
Hence, if an object is disappearing when it gets close up, then your near depth clipping plane is set too far in front of the camera.
To set up a projection matrix, the easiest way is (when you're setting up OpenGL, ie. after it's been initialized and you're just setting up default stuff like lighting):
glMatrixMode(GL_PROJECTION);
{Switch to editing projection}
glLoadIdentity;
{Default matrix load}
gluPerspective(90, Width/height, 1, 1000);
{Set up projection properly}
glMatrixMode(GL_MODELVIEW);
{Switch back to editing normal matrix}
gluPerspective - look it up in the help files. It's the easiest way to set up projections.
Why bother setting near and far depth clipping? Accuracy. Think about it: If you only deal with objects between 1 and 10 "units" distance away, you can store the distances (depths) with MUCH greater accuracy, than if you need to deal with objects between 1 and 10000 "units" away. In that case, because the numbers are larger, you'd have much less accuracy - possibly very little or no decimal point accuracy at all.
So you set up the depth clipping depending on what you're viewing. If no object EVER gets more than say 100 units distance away from the camera, then tell OpenGL that! It can then devote less space to storing the integer part of the distance, and more to storing the fractional part - giving more accuracy, and better quality depth calculations.
OK ... I think that's all you need to know (and a bit more!)