Not that much knowledge of 3D APIs around here IMO
Using OpenGL you have the ARB_fp/ARB_vp extensions which cover the ASM-like interface to some hardware, it's like the DirectX Graphics vertex/fragment shader.
There's also ARB_shader_object along with ARB_vs/ARB_fs extensions, which is GLSlang, a high level shading language, conceptually similar to DirectX Graphics HLSL.
Then you have the old stuff like DOT3 and all extensions, just like in DirectX Graphics.
To adress different hardware segment no matter the API, you'll have to code different code paths, that's something you just can't escape right now, in the future, hopefully, using high level shader languages, this should be solved.
Now what you CAN DO in OpenGL and NOT in DirectX Graphics, is access the hardware 'to the metal' using vendor specific extensions to get the most out of it.
This is OPTIONAL, but you CAN, which is a big plus for OpenGL compared to DirectGraphics.
Basically DirectX Graphicsis a subset of OpenGL, feature wise.
As for OpenGL2.0 it's supposed to be a major API revision (hence the name), which gets ride of legacy stuff to have a cleaner and simpler interface, it will be no different too DirectX revisions, except you don't have to change much/most of your code to get advantage of it.
(DirectX Graphics, formerly Direct3D, has changed its interface extensively between two version in the past, meaning that you had to rewrite most of the engine to be able to access the new hot features)