El comportamiento de los checkbox es: si esta marcado se envia el valor dentro del atributo
value. Es decir, si tienes un checkbox así:
Código PHP:
Ver original<input type="checkbox" name="foo" value="bar" />
Si el usuario lo selecciona vas a recibir una variable foo con el valor bar en $_POST:
Código PHP:
Ver original<?php
/*
Imprime:
array(1) {
"foo" => "bar"
}
*/
Si no la seleciona no se envia nada. Ahora para volver a marcarlo solo es cuestión de comparar al dibujar tu checkbox si el valor es igual al value del checkbox y si lo es imprimes el atributo checked del checkbox para marcarlo.
Saludos.