Just remember that if you call glTranslatef(x,y,0) all other OpenGL operations will be relative to the (x,y). An example
[pascal]
glTranslatef(10,20,0);
glBegin(GL_QUADS);
...
glEnd;

glTranslatef(20,-10,0);
glBegin(GL_QUADS);
...
glEnd;
[/pascal]
The second call to glTranslatef will move your position to (30,10) not (20,-10) since it is relative to first call. (Its like Delphi TCanvas methods MoveTo and LineTo). To translate to proper position wrap code with
glPushMatrix and glPopMatrix calls i. e.

[pascal]
glPushMatrix;
glTranslatef(10,20,0);
glBegin(GL_QUADS);
...
glEnd;
glPopMatrix;

glPushMatrix;
glTranslatef(20,-10,0);
glBegin(GL_QUADS);
...
glEnd;
glPopMatrix;
[/pascal]
glPushMatrix saves current transformation matrix on a stack and glPopMatrix restores it. Those two are very usefull functions.
Take a look at KAZ Start2D and End2D procedures. He uses glPushMatrix and glPopMatrix to save old projection matrix, turns on 2D and finally restores old projection.

Same applies to glRotatef and glScalef if you want to rotate and scale sprites.