If your game is 2D, there will be no distortions with a Ortho matrix.  Plus, you'll be able to use actual screen pixel coordinates, like PyGame, (if you use that) but it's not flipped.  You can set your characters at z = 0, and the foreground and background at 1 and -1. 

Personally, I don't know how well OpenGL handles very small floats.  My guess would be a truncation.  In any case, the Z-buffer doesn't have a resolution fine enough to handle that except under very specific circumstances (like your near plane is 0.00001 and your far plane is 0.00003.  I don't recommend that. 

The essentials of my 2D view class system, for Ortho projections.  You clear screen, use .set_view(), and draw:
class glLibInternal_glLibView():
    def __init__(self,rect):
        self.rect = list(rect)
        self.x = rect[0]
        self.y = rect[1]
        self.width = rect[2]
        self.height = rect[3]
        self.size = [rect[2],rect[3]]
class glLibView2D(glLibInternal_glLibView):
    def __init__(self,rect):
        glLibInternal_glLibView.__init__(self,rect)
    def set_view(self):
        glViewport(*self.rect)
        glMatrixMode(GL_PROJECTION)
        glLoadIdentity()
        gluOrtho2D(self.rect[0],self.rect[0]+self.rect[2],self.rect[1],self.rect[1]+self.rect[3])

        glMatrixMode(GL_MODELVIEW)
        glLoadIdentity()


Ian