One thing you must understand is, that a "vertex" is not synnonymous with "position". A vertex is the whole set of attributes; position, normal, texture coordinate, etc. OpenGL processes geometry one primitive at a time, where a primitive consists of 1 (point), 2 (line) or 3 vertices (triangle). You can not process position and normal separately, they always must go together.
Before you can process it in OpenGL you must expand the data in the .obj file. For each unique tuple of attributes introduce a new vertex with a new index and replace indexed attributes from the .obj with the indexed vertex OpenGL requires.