1) Create a Global Variable called Rotating. Set the initial Value to 0
When the key is pressed, set the variable to one. When the layout has finnished rotating, set the variable to 0 again.
In the condition where the key is pressed, add another condition "System: Compare Variable: Rotating = 0" That way, the event wont be triggered while the thing is rotating. If you want a qued system, where it waits untill the rotation has finnished, let me know, that may take a little more explaining.
2) As far as I know, you can only rotate the point of origin. You can do this using the Angle actions in the particle that you want to rotate.
Hope this helps :)