Olá, Davi, a letra "i" funciona como um contador para ajudar o programa a saber quando deve parar de repetir uma instrução.
Vamos utilizar este trecho de código para exemplificar:
function mostraCarro(){
for (let i = 0; i < imagemCarros.length; i = i + 1) {
image (imagemCarros[i], xCarros[i], yCarros[i], 50, 40);
}
}
Relembrando, neste exemplo:
let i = 0; ---> declaramos a variável "i" (contador) e definimos que ela receberá inicialmente o valor "0" (começará valendo 0).
i < imagemCarros.length; ---> definimos que enquanto o valor do contador (i) for menor que o tamanho do array (quantidade de elementos) da variável "imagemCarros" a função "mostraCarro" deverá ser executada. No nosso exercício, o array contém 6 elementos (a imagem de 6 carros). Assim, enquanto i < 6, as instruções contidas nessa função devem ser repetidas, certo?
i = i + 1 ---> (equivale a i++) definimos que o contador deverá ser incrementado (somado) em uma unidade cada vez que a função "mostraCarro" for executada.
Nesse caso, além de contar o número de vezes que a função será repetida, o "i" também conta a posição do elemento dentro do array que deve ser considerado naquela repetição [i].
Lembrando das variáveis que aparecem neste exemplo (arrays):
let xCarros = [600, 600, 600, 600, 600, 600];
let yCarros = [40, 96, 150, 210, 270, 318];
imagemCarros = [imagemCarro, imagemCarro2, imagemCarro3, imagemCarro, imagemCarro2, imagemCarro3];
Agora, podemos criar uma tabela para nos ajudar a entender como acontece o incremento do contador(i), lembrando que estamos trabalhando com o laço de repetição for:
Como vemos, quando o "i" atinge o valor 6, ele torna a condição i < imagemCarros.length (= i < 6) falsa, já que passa ser IGUAL a 6, e a repetição cessa.
Espero ter contribuído para esclarecer sua dúvida. Bons estudos!