Is there something like this in OpenGL?
I would be surprised if there wasn't an OpenGL extension somewhere, it that much was even required.
Is there any flaw in the code, or is it possible that only DX9.c has ps3.0?
The ps3.0 and vs3.0 is a DX only profile, but I doubt you need them anyway.
As for your code, I spottet 2errors:
1: 'texCoord' is declarared as an int3, should just be an int
2: 'texCoord' is mapped to COLOR semantic, but your code assigns the texture coordinate to TEXCOORD0.
Another optimization you might try, like .oisyn suggested, is to derive the third component of the normal in the shader, and pack the xy part along with the position.
// CG Code
C3E2v_Output C3E2v_varying(float4 position : POSITION)
// Extract position
OUT.position = float4(position.xy, 0.0, 1.0);
// Derive normal
normal.xy = position.zw;
normal.z = sqrt( 1 - normal.x*normal.x - normal.y*normal.y );
OUT.color = normal;
// C Code, OpenGL
glVertex4f(-0.8, 0.8, 0.0, 0.0);
glVertex4f( 0.8, 0.8, 1.0, 0.0);
glVertex4f( 0.0, -0.8, 0.0, 1.0);
P.S. there is a new version Cg out you might wan't to try.