I think the problem with simply deleting events is that when the project gains some complexity, it's practically impossible to know where all the events were and what they used to do. Sometimes crucial complex events disappear, and you simply can't perceive they are missing and spend ours trying to find what's wrong. It's even worse when there's lots of events scattered in various places (and/or different event sheets) and they all disappear at once, without leaving any trace of their existence.
In my opinion a far better way to handle this is to color red the events with invalid references, and make them act like disabled events: they simply don't exist during runtime, only in the editor (under the hood they are commented, or simply not included). This allows to run the game without any annoying errors hindering it's execution.
An alert icon could then appear at the status bar (or other places) indicating there are broken events. You can choose to fix those events by replacing it's references or leave to fix later if it doesn't interfere with what you are currently testing.
If a new object/variable/... is created with the same name as a broken reference, the user can be prompted to automatically replace the references in those events or not (obviously only if it's of the same object type). If it's not desired, the bad references are given a new name like "reference2".
The big advantage of this is that you can see exactly what those events where doing, and replace the bad references with proper ones. It would also help a lot in importing objects from other projects, or even merging projects, since you can have some time to analyze those broken events and figure what variables/behaviors/effects... you need to add to make those objects valid to replace those events again.