Think of point primitives as quads where you only have to pass down a single vertex for the center of the quad. And think of gl_PointCoord like a (0,0)..(1,1) texcoord you can use to lookup the texture value for the current fragment (candidate pixel) in that quad).
The values in gl_PointCoord are two-dimensional coordinates indicating where within a point primitive
the current fragment is located, when point sprites are enabled. They range from 0.0 to 1.0 across the
point. If the current primitive is not a point, or if point sprites are not enabled, then the values read from
gl_PointCoord are undefined.