Woah, you made it sound totally complicated. Simplified, an event is code that sets up a certain function to run (using listenforevent) whenever an event is pushed (using pushevent). So for example you can push an event whenever the player character speaks, and you can listen for that event to run some function that reduces sanity.
Yes, I've done this. Although in my case the listener function was not defined in the listenforevent, because it's much easier to remove the listener if you know the listener function's name. It would be interesting to see what happened if you defined the listener function inside the listenforevent, because you'd be removing the listener function while it was running itself.