When I use your setup, I cannot see anything not working except for the missing visual rotation. This is quite easy to explain: the 3D Viewport only shows the rotation if you set the Transform Orientation to Local instead of Global:

I do not see any change of rotation when scaling really. Or at least not noteworthy change. Rotation values which are 0° tend to change to very very low positive or negative values around 0° in the sixth decimal place, these are just rounding errors.
The other thing is the scale gizmo, it simply does not seem to orient its endpoints (the cubes) along the rotation axes (even when you have the orientation set to Local). It's a bit weird, when you rotate around X for example, the scaling cubes on Y and Z seem to be rotating with the axes they are attached to, but the X cube is not rotated along X. I do not know if this is a bug or if they just do not care to show rotation on the scaling gizmo (does not really explain the orientation along all other than the rotation axis though).
My guess would be, the orientation of the scale cube gizmos is derived from the vector between startpoint and endpoint position of the axis, which does not take rotation along said axis into account. But this is just speculation and as I said, I have no idea if it is a bug or they simply do not care about it.
//EDIT: Oh, I understand what you mean. Yes, scaling with the gizmo in Global mode does not really work. Even if you change the nodetree to have less or no glitching, it is not working as expected. Usually with a single Transform Geometry node, something like scaling on a global axis does not work, because within the same node the scaling is based on the local rotation given in this node. Scaling a rotated object globally non-uniformly can deform a mesh in a shearing way instead of stretching, which a single Transform Geometry node cannot do.
To achieve this inside Geometry Nodes (and without gizmo) you would have to do it with two consecutive Transform Geometry nodes, on the first you can do the translation and rotation, on the second you do the scaling which then works like scaling globally.
To anticipate your next question: yes, you can have two Transform Gizmo nodes to transform the mesh one after another, you can select in the Properties that you want the first one to only affect Translation and Rotation and the second one to only affect Rotation with the according checkboxes.

However this does not really help. Because I could not find a setup which does not mess up the scaling (and somehow the rotation with it). The problem is, if you have rotated the object on the X axis for example, then you can easily change the X scale afterwards (which would not result in shearing the object).
But if you try to scale on Y or Z it always affects the scale on both axes (all axes on which you have not rotated the mesh). This is after rotating on one axis. As you soon as you rotate more than one axis, trying to scale a single axes will result in affecting the scale on all three axes.
This might be a bug or a limitation of the functionality of the Transform Gizmo, I have no idea. The only solution to make the scaling behave like global scaling is to use the Linear Gizmo nodes, for each axis a gizmo and combine them to create the scaling after translation and rotation:

But this way the option to scale in Local orientation goes missing. If you want to have both you would need to have different scales for "local" and "global", where the local scaling is done by the Transform Gizmo and the global scaling is done by the three Linear Gizmo nodes.

All in all I guess this might lead to confusing and slightly incomprehensible behaviour if you have a globally scaled mesh which you then also rotate and scale locally etc., so I would usually prefer to have a single Transform Gizmo and use it with Local orientation.
Finally: back to a simpler setup - just using a single Transform Gizmo and for this demonstration I'll deactivate the Scale property. This is about when you were wondering if you put the Join Geometry into the wrong place.
There is a main difference between placing the Join Geometry node before or after the Transform Geometry node, but depending on the chosen Transform Orientation the outcome is reversed. First I will show in Local orientation what happens: if you join before the transformation then very conveniently the gizmo is translated and rotated with the mesh so that it moves with it and in Local orientation shows how it is rotated.

But if you join the gizmo after the Transform Geometry node, it is not translated and rotated and will show as if you were in Global transform orientation - although the transformations will be executed in local space which can result in seemingly weird behaviour:

So if you want to join after the transformation, you can plug the Translation value into the Position of the Transform Gizmo node and Rotation into Rotation. The reason why you would want to do this instead of simply joining before transformation is of course to have the freedom to modify the position and/or rotation of the gizmo or give it a completely different one instead of being locked to the mesh.

Now what is different about the Transform Orientation set to Global is the fact that the result is reversed to the Local orientation: if you join before the Transform Geometry node, the gizmo is transformed with the mesh - but it does not show in the viewport. Therefore the seemingly weird behaviour happens in this case, because although the gizmo is displayed in global orientation and you move it globally, the effect works locally.
The other way round when you join after the Transform Geometry node: the gizmo shows a global orientation and it is working globally.