Второй цикл гарантирует, что элементы хранятся в правильном порядке в новом массиве. Представьте себе круговой буфер, где спереди (место, откуда вы берете) больше, чем сзади (там, где вы добавляете вещи). Таким образом, емкость равна 50, передняя часть равна 40, а задняя часть равна 10. Элементы будут удалены из очереди в порядке 40, 41, 42, 43 ... 0, 1, 2, ... 9.
Теперь, когда вы изменяете размер очереди, элементы копируются в новый массив в том же порядке. Но удаление элементов из очереди, которая теперь имеет емкость 100, будет 40, 41, 42, ... 49, 50, 51. Но в позиции 50 ничего нет!
Таким образом, эти 10 элементов перемещаются из позиций с 0 по 9 в позиции с 50 по 59. Вот что делает второй цикл.