intanto prova a mettere un bel print'redirect'; exit; prima di header giusto per vedere che arriva fin lì lo script... se sì allora ritogli questa aggiunta e metti exit; dopo header
per quanto riguarda true e false non c'è niente di strano (anzi ci si potrebbe stupire del contrario)... comunemente molti linguaggi associano true ad 1 o -1 e false a 0. In realtà il PHP non lo fa (p.es. in alcuni linguaggi si ha "false=0", mentre in PHP non proprio)... diciamo che a seconda del contesto potresti avere una conversione di tipo e ottenere un risultato analogo a quello che dici (puoi provare a studiarti gli operatori === e !== del PHP per capire meglio)