«Опасность», о которой вы говорите, связана с попыткой перебора части изменяемого массива. Если вы выполняете только одну модификацию и выходите из итерации сразу после этого, тогда проблем нет.
Конечно, ваш реальный пример можно сделать гораздо проще:
arr.delete_at(arr.index(5))
А что касается безопасности, полезно понимать, что обычно вы можете удалить, повторяя итерацию просто отлично, если вы выполняете итерацию в обратном порядке, поскольку в этом случае вы меняете вещи за своей итерацией, а не впереди нее ...