An OpenGL Object is an OpenGL construct that contains some state. When they are bound to the context, the state that they contain is mapped into the context's state. Thus, changes to context state will be stored in this object, and functions that act on this context state will use the state stored in the object.
OpenGL is defined as a "state machine". The various API calls change the OpenGL state, query some part of that state, or cause OpenGL to use its current state to render something.
Objects are always containers for state. Each particular kind of object is defined by the particular state that it contains. An OpenGL object is a way to encapsulate a particular group of state and change all of it in one function call.
The functions to generate object names are of the form?glGen*, where * is the object's type in plural form. All functions of this type have the same signature:
void glGen*(GLsizei n?, GLuint *objects?);
Because objects in OpenGL are defined as a collections of state, to modify objects, you must first bind them to the OpenGL context. Binding objects to the context causes the state in them to be set to be the current context's state. This means that any functions that change the state governed by that object will simply change the state within the object, thus preserving that state.
Binding a newly generated object name will create new state for that object. In some cases, the target to which it is first bound (see below) will affect properties of the newly created state for the object.
Different objects have different binding functions. They do share a naming convention and general parameters:
void glBind*(GLenum target?, GLuint object?);
Once you are finished with an object, you should delete it. The functions for this are of the form?glDelete*, using the same object type as before. These functions have this signature:
void glDelete*(GLsizei n?, const GLuint *objects?);