How can I properly destroy actors from an array inside a loop

This is indeed a frustrating limitation. Why is there no backwards loop? Or a way to invert an array?

Delays and MarkForDestruction work fine for handling delayed destruction of the object itself but I think it could be confusing if the actor than refers back to the array (which is presumably held elsewhere) to remove itself. Hmm… you probably mean a delay calling Remove on the array. Still seems confusing.

Other suggestions:

Good luck!