If you want hardware support, I would be to create an abstraction layer for your application to use. Though, those are newer technologies as-well.
You might be able to speed it up using things like OpenCL, and CUDA. But hardware acceleration would be difficult. If you implemented OpenGL in software, you could use all functions that you implemented. And with new APIs and features coming out, there where a lot of things back then that I doubt they would've been prepared for in the hardware design, so it's quite likely that some graphics cards are just stuck with insufficient support. I'm sure that had quite an effect on how the hardware needed to be made. A major thing that changed in OpenGL is they moved to a shader-programmable pipeline. Then there's no guarantee that the graphics card would be able to handle such things. They have no reason to worry about a 5 year old graphics card, when they have 10 to worry about just in the last 2 years.
There might be a chance that the user could upgrade their graphics drivers, but if the card is to old then the company will just stop updating them. If the hardware doesn't support it then your stuck without. You'd send the request for a 4.4 context and get a NULL context back (indicating that it wasn't created.) You'd make a wglGetProcAddress call and get NULL back for the function that you requested an address to. In C and C++, you just wouldn't get the functions to run it.