Exit прекращает работу цикла, переводя выполнение на строку после слова Next. Не только в данном случае но и везде. Если циклы вложенные, то выйдет только из того в котором стоит Ехит.
Убрать ехит круто, но лучше этого не делать, в том смысле что та проверка на коллизию после скрытия объекта не должна работать вовсе, т.е. объект нужно исключить из проверки.
Почему бы тебе не перебирать блоки используя конструкцию for ... each как сделано для пуль? Тогда не будет вылетать после удаления и гарантированно в проверку удалённый не попадёт.
Если нужен именно массив, то можешь писать так:
For i=0 To 7
If(AllBlocks(i) <> null)
Local hide% = EntityCollided(AllBlocks(i)\ent, TYPE_BULLET)
If hide<>0
FreeEntity AllBlocks(i)\ent
Delete AllBlocks(i)
AllBlocks(i) = Null
Exit
EndIf
EndIf
Next