Always remember how events work : events are tested EVERY tick, and also executed EVERY tick when true.
In your example, at 60 FPS, your "life" value ends at -60 at the end of 1 second of collision.
Either use a "Trigger once while true" condition, or prefer using a trigger condition "On collision". Or add other conditions to precisely time when the action of substracting is to happen.
I wouldn't use wait actions as it might end up in unwanted behavior, and will only stack those actions as explained in this tutorial.