Why does delay not work?

I made a respawn system. It works without delay, but not WITH delay. Why? Would be grateful for any help!

Whatever you do after you destroy the actor will not be called as you already destroyed the caller (Delay node will not make the Actor stick around). You should wait with the destroy node until you are done using the Actor. Either have an external Actor manage the spawn or delay the destroy event by SetLifeSpan. Note that you would have to fake that the Actor was destroyed when using SetLifeSpan.
Another approach is to never destroy anything but pick actors from a pool and reset them whenever they re-spawn.

This is correct. You also don’t need the double delay. You can delay the same amount of time whether it is respawning or not. After you have decided whether it is respawning, you either respawn it, or you destroy it.

If you are looking for the enemy to be gone a set amount of time before respawning, just set actor to hidden in game for that amount of that and call respawn after.