You can use the AngularVelocity expression of the physics object to tell how fast it's going. Test what the value is upon collision, and from there you decide how high it has to be to be a light, medium, or hard hit.
Lemme know if you need an example whipped up -- or if this doesn't work. It might not, since I don't actually use the physics behavior myself.
'AngularVelocity' is the speed the object is rotating at - to get the overall speed use distance(0, 0, Sprite.Physics.VectorX, Sprite.Physics.VectorY). Other behaviors have a 'speed' expression. You just need to check this in the collision event.
thanks for the ideas... i'm guessing that the distance(0, 0, Sprite.Physics.VectorX, Sprite.Physics.VectorY) is what I need... the only trick I have now... (and sorry for being so naive) is where can I use this expression?
You can use expressions about wherevere you have a text field.
So you can use expressions in the system condition "compare", in actions, etc...
I guess what you could use would be system: compare two values, put distance(0, 0, Sprite.Physics.VectorX, Sprite.Physics.VectorY) in the first field, and a comparison value in the second field (> 0 for example, would mean that the action would happen anytime your object is moving, since its velocity is not 0).