You want to do something like:
glBindBuffer(GL_ARRAY_BUFFER, vertex_id);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_id);
glDrawElements(GL_TRIANGLES, num_indices, index_type, 0 /*index_offset*/);
where index_type is something like GL_UNSIGNED_SHORT, depending on what kind of data your index buffer contains.
This asumes you have created your two buffers and filled them with data already, and are using the builtin glsl attributes or fixed function pipeline. If you have specified your own attribs in the vertex program you will need to call
glBindAttribLocation(program_id, 0 /*index*/, "position");
before linking the program to register position as attrib 0, and then call
glVertexAttribPointer(0 /*index*/, 3 /*num_elems*/, GL_FLOAT, GL_FALSE, 0, 0);
Filling is done with
glGenBuffers(1, &vertex_id);
glBindBuffer(GL_ARRAY_BUFFER, vertex_id);
glBufferData(GL_ARRAY_BUFFER, num_bytes, data, GL_STATIC_DRAW);
Same thing for index data, but with GL_ELEMENT_ARRAY_BUFFER as target instead. You can change GL_STATIC_DRAW to something else depending on your usage patterns.