I have the following code:
glNormal3f(0, 0, 1);
glColor3f(1, 0, 0);
glBegin(GL_POINTS);
glVertex3f(-45, 75, -5);
glVertex3f(-45, 90, -5);
glVertex3f(-30, 90, -5);
glVertex3f(-30, 80, -5);
glVertex3f(-35, 80, -5);
glVertex3f(-35, 75, -5);
glVertex3f(-45, 75, -5);
glEnd();
glColor3f(1, 1, 0);
glBegin(GL_POLYGON);
glVertex3f(-45, 75, -5);
glVertex3f(-45, 90, -5);
glVertex3f(-30, 90, -5);
glVertex3f(-30, 80, -5);
glVertex3f(-35, 80, -5);
glVertex3f(-35, 75, -5);
glVertex3f(-45, 75, -5);
glEnd();
Notice how the code between glBegin and glEnd in each instance is identical.
But the vertices of the GL_POLYGON (yellow) don’t match up with the GL_POINTS (red).
Here is a screenshot:

The more I use openGL the more I’m hating it. But I guess it’s probably something I’m doing wrong… What is up?
That’s because your polygon is not convex – the top right corner is concave.
GL_POLYGONonly works for convex polygons.Try using
GL_TRIANGLE_FANinstead and start from the lower-left corner: Your polygon is star-shaped, so you can draw it with a singleGL_TRIANGLE_FANif you start from a point in its kernel (of your vertices, the lower-left one is the only one that satisfies this condition).If you expect more complicated polygons, you need to break them up into convex bits (triangles would be best) to render them.