технически разницы никакой, разница только в семантике:
for(буквально "для") - применяется когда нужно что-то выполнить в определенном диапазоне. то есть на человеческом языке это будет звучать примерно как: "для такого диапазона мы делаем что-то".
while(буквально "пока") - применяется когда нужно что-то выполнять неопределенное кол-во раз до выполнение конкретного условия. то есть на человеческом языке это будет звучать примерно как: "делать что-то пока не выполнится условие".