buenas...
asumiendo que la sintaxis estan correctas, no veo porque no te funciona al menos la segunda alternativa. lo primero que debes revisar es la consola de error. si hay algun problema este te lo debe de indicar. si no hay ningun error, en el segundo codigo que intenta capturar el checkbox debes ver que el alerta de la celda muestra el <input>. lo que probablemente no debas apreciar es el valor de checked. la razon exacta no la conozco pero mi conclusion es la siguiente. si javascript imprime el atributo checked="checked" como representacion de input.checked = true, entonces se asume que ese es el estado de facto. ¿que implicacion tiene? si tuvieras un formulario dinamico que cambia los estados de los campos segun ciertas acciones del usuario y luego el usuario decide reestablecer (reset) el formulario, dicho campo quedaria intacto ante el reinicio. lo mismo aplica con otras propiedades/atributos de los elementos. en fin, para obtener el estado del checkbox primero tienes que hacer referencia al campo y luego leer la propiedad. en el segundo codigo se supone que debes obtener la referencia mediante getElementsByTagName.