Suppose I use glReadPixels() to read the depth of a pixel from the depth buffer. What are the units of this? Is it the distance from the camera? Or the distance from the near clip plane? And is the distance normalized to clip space, or in real units?
Whatever you want them to be. From the documentation:
Each component is converted to floating point such that the minimum depth value maps to 0 and the maximum value maps to 1. Each component is then multiplied by GL_DEPTH_SCALE, added to GL_DEPTH_BIAS, and finally clamped to the range 0 1.
Beyond the given ranges, it is up to you to interpret the data as whatever "units" you see fit, depending on the data you wrote into the depth buffer in the first place and what it means to you.