1. "Trigger once" in events 24 and 27 doesn't mean "once per instance". This is a very common mistake people make. I don't like using this condition in sub-events, and especially in loops...
2. In events 18-28 you loop through Player_Coll and pick their linked Player_Arms, but you don't pick the correct Player_Image instance for each Player_Coll. That's why there is a mess with z-order.
.
I suggest you read about containers. Put Player_Coll, Player_Image, Player_RightHand, Player_LeftHand sprites into a container. It will be much easier to manage them, you can create Player_Coll and other objects will be created automatically, just need to position them and pin.
Same with destroying - just destroy one object and don't care about the rest.
You will not need PlayerIndex variable, when you pick one object instance from the container, others will be picked automatically in the same event.
So your event #18 will look like this:
For each Player_Coll
If Player_Image is mirrored -> LeftArm move in front, RightArm move behind
else -> LeftArm move behind, RightArm move in front