OpenGL pipeline stages, when is the primitive assembly executed?
For a diagram to be comprehensive, it'd have to show way too much detail. It's just a simple tool.
Primitive assembly is the process of taking a sequence of vertices for a particular rendering primitive type, and generating a sequence of base primitives (points, lines, triangles) from them.
This process does indeed happen after vertex post-processing, as the input to the rasterizer is a sequence of base primitives. After all, you don't rasterize a triangle strip; you rasterize a triangle.
However, the input to a geometry shader invocation is a single base primitive, taken from the sequence of vertices provided up to that point. As such, a form of primitive assembly also must happen before the GS, to convert the vertex sequence into a sequence of base primitives.
This is also one reason why GS's are slow. If there is no GS, then this primitive assembly doesn't happen.
The output of the geometry shader is a bunch of vertex sequences, which still later undergo primitive assembly based on the output primitive type of the GS. A GS can output triangle strips, so there has to be primitive assembly to turn those strips into individual triangles.