Hi,
Lots of string doesn't slow down anything, it's what you do with them.
Comparing lots of string is ok, don't expect performance issues here.
Debugging is only an editor thing, so this is not affecting your game at all.
Checking variables is ok, this is the core of programming, so you are fine.
Global events do not slow down things more then non global events.
ArrayList do not slow down things, it's what you do with it. If you do do too much work on them for a given update, then yes, it will slow down for sure, but that's not really related to the arraylist itself but more in the total amount of work you do as a result of having a long list or heavy operation on each entries of that list.
As always, I think it's important to realize that your game is going to struggle more because of wrong shaders, bad mesh optimizations, wrong quality settings ( user's own choice, but still, resulting to bad perfs) for a given machine, too much shadows or bad lighting technics.
When all this is sorted and efficient, then you can tackle programming refactoring. However, se few pitfalls should be avoided at all costs.
-- Collisions and triggers detection: this can lead to very bad perfs if not carefully monitored
-- using "find gameobject" only with string. Avoid that at all costs, Unity doesn't provided an efficient way to do this, prefer searching by tag instead or better keep a propery reference. IF you must use Find, do it once only and store a reference don't do this on every update or even twice.
bye,
Jean