They are very useful! For example, Sabre won't exist without activation events.
Activation events allow you to activate code in other actors, even multiple times per one frame!
When a script executes a SendActivationEvent() -call, the code interpretation of the current event is stopped for the time the activation event is being executed. You won't of course notice that since it all happens in one frame, but it really does and gives one great possibilities.
Sabre uses activation events to change the texture actors animation and animation position for every single vertical line on the screen, so it happens as many times in a frame as the views width is (default 640). Without the use of activation events, the animation and animation position would be changed only once per frame, and that would make all the vertical lines to have the same animation and animation position. That's why Sabre needs activation events.
There is also much more you can do with activation events, but that's the basic idea of them.
EDIT: Sky explained the basic idea better than I did. He told the idea, I told what I use it for.... Well,anyway, I hope my post is helpful.