I quickly compiled a list of funcs that are different in arguments, using the newest glext.h and some recent version of wglext.h :
glGetProgramiv {
void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
}
glBufferData {
void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
}
glBufferSubData {
void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
}
glGetBufferSubData {
void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
}
glShaderSource {
void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
}
glCompileShader {
void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
void APIENTRY glCompileShader (GLuint shader);
}
glLinkProgram {
void APIENTRY glLinkProgramARB (GLhandleARB programObj);
void APIENTRY glLinkProgram (GLuint program);
}
glValidateProgram {
void APIENTRY glValidateProgramARB (GLhandleARB programObj);
void APIENTRY glValidateProgram (GLuint program);
}
glGetUniformLocation {
GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
}
glGetActiveUniform {
void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
}
glGetUniformfv {
void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
}
glGetUniformiv {
void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
}
glGetShaderSource {
void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
}
glBindAttribLocation {
void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
}
glGetActiveAttrib {
void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
}
glGetAttribLocation {
GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
}
wglChoosePixelFormat {
BOOL WINAPI wglChoosePixelFormatARB (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
int APIENTRY wglChoosePixelFormat (void); // ignore this def, custom-modified
}
So anyway, if you’re targeting a core version, use the core function; otherwise the ARB, otherwise the EXT.