Ok,..so we will do this here. hehe. So, if you stick to the generic path in OpenGL you are sort of at a combination of DX8 and 9? The other option is to use the NVidia path, correct? But this path will only work with NVidia cards, correct (sounds like a DOH! kind of question, but I do not like to assume).
The question about new shaders does not really apply to DX (if I am reading the intent correctly). The language has been enhanced for all shaders. DX9 defines up to PS3.0 (no one supports just yet due to the hardware changes required). PS2.0, 2.1, and 3.0 are defined in DX9 with PS1.4 and earlier in DX8/7.
PS2.1 (NVidia specific) and PS3.0 define full branching and loops.
In DX, MS just modifies the assembly code for each revision of DX. This lead to a real mess as up to PS1.3 every minor number change represented a whole new set of instructions with no requirement to be backward compatible.
This slowed shader usage tremendously in DX. Finally, with 2.0 and later, video cards are required to support all previous versions. Microsoft added the further assurance that all forward versions of the shaders will require full backward compatibilty.
Also, Microsoft had never made a requirement about what level of shader support was needed. NVidia and ATI never used the same version. Microsoft ended that with DX9 and force 2.0 to be required.
These changes finally made DX shaders worth using and a nightmare for video card makers to implement (better them than me).
DX9 shaders are the first to have a high-level language with them. Previous shaders were all done using assembly shader ops.