They are defined in the NV gpu program 4 extension here
No, they're referenced by this extension. Defined they were in ARB_vertex_program
Is this the only way to transfer constant data over to program?
If you're using the old and dusted ARB_…_program extensions, then yes. If you use GLSL then Uniforms are the way to go.
I also saw glProgramBufferParameter somewhere and got more
There is no function named glProgramBufferParameter. There is however a function glProgramBufferParameters*NV
. The NV in the end is important, it tells that this is a NVidia specific extension. Again this is for use with a ARB_…program style shader and not for GLSL; the NVidia OpenGL implementation internally compiles GLSL to ARB…_program style shaders.
Anyway, program buffer objects have a GLSL counterpart in the form for Uniform Buffer Objects: https://www.opengl.org/wiki/Uniform_Buffer_Object