OrangyTang, I like where you're going with that, but the only experience I have with the glOrtho stuff is when I initialize my display.
I typically setup the projection matrix (via glOrtho) at the start of rendering every frame, which makes it dead easy to tinker with the parameters. Just move your calls from your init (and remember to switch to and from PROJECTION_MATRIX).
Also, you talked about having a camera. I don't know if I have a camera. Are you referring to something built into OpenGL? All I know are basic OpenGL commands to help me do what I usually do in Java2D. I don't know of any camera stuff I can use.
A 2d camera class in OpenGL is dead easy, you basically just need to keep track of the current camera position and possibly some kind of zoom parameter. You can then just use it to setup your projection before every frame, something like:
// The following gets your 2d view with 0,0 at the center of the screen:
glMatrixMode(GL_PROJECTION);
glOrtho(-400, -300, +400, +300); // or better yet, use Display.getWidth() / 2 etc. rather than assuming 800x600
// Then translate the 'camera'
glMatrixMode(GL_MODEL_VIEW);
glTranslatef(-cameraX, -cameraY, 0f); // negative 'cos we move the world around the camera
After that all your drawing calls can be made in world space, rather than manually offseting everything like you would for Java2d drawing. Just remember not to trash the modelview matrix during drawing (so remember to glPush/Pop when you modify it).