So I just tried modifying the script, you're correct eEvtMouseLeftButtonHold fires when releasing the mouse button after holding it for a couple of seconds. eEvtMouseLeftButtonHolding fires when the hold timer runs out, even if the button is not released.
I've also tested the unregistering of the events and they seem to unregister correctly when exiting the scene and calling the end() function. At least on v509 Build 1203
For now, I'm going to let them here since they're for a prototype, but will move the event handling to a separate script when doing it "proper".
That screenshot you've attached looks really cool! Yes, it is a pitty we can't change the sorting order but... we manage, haha!
Also, did your minigame connect puzzle pieces "in the air"? For example even if they were not in the final, correct position?
Cheers and thanks a lot, AFRLme!