In GLX 1.1, you associate a GLX context with one drawable (window or pixmap) calling glXMakeCurrent(). glXMakeCurrentReadSGI() lets you attach a GLX context to two drawables: The first is the one you draw to, the second serves as a source for pixel data.
Having both a read and write drawable is useful under various circumstances; for example, to copy the contents of a window to another window, to stream video to a window, and so on.
The write drawable is used for all OpenGL operations. Accumulation buffer operations fetch data from the write drawable and are not allowed when the read and write drawable are not identical.
The read drawable is used for any color, depth, or stencil values that are retrieved by glReadPixels(), glCopyPixels(), or any OpenGL extension that sources depth images from the framebuffer in the manner of glReadPixels() and glCopyPixels().
Here's some additional information about the two drawables:
If a subsequent command sets the read buffer to a color buffer that doesn't exist on the read drawable--even if set implicitly by glPopAttrib()--or if an attempt is made to source pixel values from an unsupported ancillary buffer, a GL_INVALID_OPERATION error is generated.