Exacto. Aunque también podrías ejecutar o verificar uno u otro llamándo a cada uno por su nombre.
Pero si tuvieras 3 formularios en la misma página el primero que hubieras definido sería el document.forms[0] o bien document.nombreDeEseFormulario, el segundo definido sería el document.forms[1] o document.nombreDelForm y el tercero document.forms[2] o lo document.nombreDeEste.
Se crea una lista (array o matriz) automáticamente con los formularios de una misma página. Si sólo hay uno, pues se crea una lista de 1 elemento con la posición 0 (que es la primera)
Yá dentro de cada formulario también se crea automáticamente otra lista (array o matriz) con los elementos que tiene ese form.
Por ejemplo, en tu formulario tienes un array de 8 elementos (3 campos ocultos más 5 visibles).
Si quisieras acceder a tu campo oculto de nombre "subject" podrías referenciarlo mediante
document.forms[0].elements[2]
o bien, en tu caso
document.form.elements[2]
Prueba a pedirle a body lo siguiente
<body onload="alert(document.forms[0].elements[2].name)">
Verás como te devuelve el nombre de tu tercer campo oculto (subject)
Y todo va maomeno así