Ajuster la taille des boîtes c'est juste du CSS, et ça se fait tout seul par défaut d'ailleurs, pour peu que tu fasse un clear float si tu as des float ou ton conteneur en overflow:hidden (aussi si tu as des float).
Les images tu les upload pas sur la database directement en général, mais plutôt dans un dossier upload avec une référence au nom de fichier dans la db.
En ce qui concerne les balises structurelles HTML5 tu peux les mettre où tu veux (t'as qu'à mettre un footer en premier, un header, et en bas une section, tester au validateur w3c et tu verras bien). Disons que dans notre logique d'humains c'est plus cohérent d'avoir le header en haut, le contenu au milieu et le footer en bas, mais en changeant de point de vu c'est peut-être plus judicieux de mettre la navigation du site tout en haut de la page pour permettre aux personnes qui utilisent des lecteurs d'écran d'accéder à la navigation rapidement, sans se taper le header à chaque page (et pour avoir quelque chose de plus commun visuellement modifier sa position en CSS). 