Is it safe to use opengl 1.2 or 1.3 or 1.4 base functionality and assume that anyone on windows will have drivers available to them to support them?
That depends on who will use your application. You should never assume anything, but if you’re making a game/demo, it would be pretty safe to assume the user will have at least 1.2. But as I said, never assume anything. Check the version string.
And can someone explain why there are 1.4 headers for windows, but I would still have to use extensions to access 1.4 functions, why are the headers even provided if this is the case? Just for the function prototypes?
The heareds are provided to allow you to use OpenGL 1.4. Without the header, you will probably have no idea what the function prototypes look like, what values the enumerators have etc. What would you prefer, a header with everything predefined, or would you rather look around in the extension/1.2+ specification to hunt prototypes and enum values yourself?
I am so lost, why can’t I just use nvidia’s 1.4 headers and use multitexturing without setting up the function pointers first?
All functions in OpenGL has to be loaded at runtime, cause they are all dynamically linked. Either you do it yourself, as in the case with extensions, or you let an import library do it. An import library is a connection between your application and a DLL. The import library will automatically load every function pointer you need so you don’t have to do it yourself. However, this requires that the import library actually knows about the function being imported. Since Microsoft haven’t provided any version above 1.1, the import library doesn’t know about any function in OpenGL 1.1 (or any extension), you must load them yourself.
And why is there an opengl32.lib and opengl32.dll, why is the lib there?
opengl32.lib is the import library I mentioned above. If you don’t link to this one when you compile, you have to load ALL functions yourself, not only the extension and 1.2+ functions.