никакого бреда в этом нету. единственное, что тут некорректно, так это то, что ты даешь элементам формы одинаковые имена )) - этого надо мягко говоря избегать, т.к. плохой стиль.

а теперь объясню почему именно такой результат. вот создал ты чекбокс (т.е. Input по сути). с чего ты взял что у него есть свойство length? разве это массив или строка?? нет. это все равно что ты напишешь

var i=0; alert(i.length);

так что вполне естественно, что тебе выдает "undefined".
но если браузер видит, что в одной форме несколько элементов с одинаковым именем, то ему приходится как-то выкручиваться, и он создает массив с этим именем и помещает в него все такие элементы. а вот у массива уже есть свойство length - поэтому ты получаешь ожидаемый результат.

зы Если быть точным, то в Gecko чекбокс - это HTMLInputElement, а много чекбоксов - это NodeList. вобще узнать тип объекта можно с помощью оператора typeof