Ciao, in JavaScript (e, in generale, in tutti i linguaggi con sintassi C-like) i cicli for si scrivono in questo modo:
for ( <inizializzazione> ; <condizione> ; <incremento> ) {
<corpo>
}
La parte di <inizializzazione> viene eseguita
prima di eseguire il ciclo, la <condizione> viene valutata prima di ogni iterazione (anche della 1°) ed il <corpo> viene eseguito solo se essa è vera. Infine dopo aver eseguito il <corpo> si effettua l'<incremento> (che può essere anche un decremento, o qualsiasi altra operazione).
Un esempio classico è il ciclo su un array:
for (i=0; i<array.length; i++) {
...
}
Tornando alla tua domanda: la variabile "i" è chiamata indice (per questo spesso si indica con "i") e parte da 0 perché gli array sono 0-indexed, cioè il primo elemento occupa la posizione 0. Sulla base di questa convenzione, se un array ha N elementi allora il primo occuperà posizione 0, il secondo posizione 1 e così via, fino all'ultimo che occuperà posizione N-1. E' per questo motivo che la condizione di terminazione del ciclo è " i < array.length", dove "length" è una proprietà che indica la lunghezza dell'array (ovvero N).