nelle pagine php puoi tranquillamente mettere codice html purchè sia output di php oppure meglio ancora fuori dai tag di apertura/chuisura php

<?php echo "<div>ciao</div>" ?>
<?php
$myvar = ciao;
?>
<div><?php echo $myvar ?></div>

Quello che non capisco nel tuo codice è in header.php , che senso ha scrivere "<?php ?>"?
Una pagina php può anche limitarsi a contenere codice html non occorre mettere per forza quei tag.

Altra cosa, se non opportunamente configurato php non permette di usare <? al posto di <?php .

Altra cosa ancora, quando fai l'echo, la stringa che passi a echo se è wrappata tra doppi apici, non può contenere doppi apici, ma apici singoli o doppi apici con l'escape...

echo "<div style='float: left;'>"; //ok
echo "<div style="float:left;">"; //NO
echo "<div style=\"float: left;\">"; //ok
echo '<div style="float:left";>'; //ok

Infine considera che puoi concatenare stringhe con '.' .

$pagina = $_GET['pagina'];
include("/".$pagina.".php");

Vedi un pò se riesci a risolvere.