en realidad la sintaxis no genera error, es perfectamente valido poner directamente un numero pero para tu caso particular no es lo adecuado porque se entiende que tienes un numero variable de campos. el problema no era realmente el numero en si, sino lo que evaluaba la expresion.
Código:
i=0;
// variable i contiene el valor 0;
i==1;
// se compara si variable i -que contiene valor 0- es igual a 1;
// esta expresion devuelve un boolean false, el cual detiene el ciclo for;
como podras ver, en tu segundo codigo, la condicion ahora es totalmente distinta. lo que dice es
mientras i sea menor que la cantidad de elementos. por tanto, si por ejemplo tienes 5 elementos, en el primer ciclo 0 es menor que 5 el cual evalua a un boolean true. como resultado, el interprete entra al cuerpo del ciclo. continua asi hasta que
i ya no sea menor que la cantidad de elementos.
en teoria, como antes decia, la segunda expresion puede ser cualquier cosa que evalue a un boolean donde true permite al interprete entrar al ciclo y false no entra el ciclo. el siguiente ejemplo sera esoterico para ti, pero fijate que las expresiones no tienen porque ser a base de numeros. mas adelante, cuando estes mas profundizado en el tema de DOM, vuelve analizar el siguiente codigo.
Código:
// asumiendo que element es la referencia a un elemento HTML o XML;
for(var last = element.lastChild; last.previousSibling; element.appendChild(last.previousSibling));