't basisdee is niet slecht, maar er zitten wel wat ongerechtigheden in.
Als er tekst in komt te staan, is het 'n goed idee om bij #wrap 'n max-width op te geven, om al te lange regels te voorkomen.
'n div krijgt, als je niets anders opgeeft (net zoals elk blok-element) de breedte van z'n ouder. De width: 100% bij #header heeft dus geen nut, dat is standaard al zo.
'n Combinatie van width 100% en margin : 0 auto, heeft geen nut, want hoe wil je iets dat de volle breedte vult centreren

?
Bij #menu moet je wel goed uitproberen of 't op 'n kleiner scherm ook nog wel past met die 15%. Of de inhoud van #menu ook flexibel maken, maar dat is niet altijd 'n goed idee.
In #header staan afbeeldingen. Die heb je 'n breedte in procenten gegeven en 'n vaste hoogte. Als #header dus smaller wordt, worden de afbeeldingen smaller, maar blijven even hoog. Dat leidt tot 'n lachspiegel-effect.
Afbeeldingen kun je eigenlijk het best altijd 'n vaste afmeting geven. Dat betekent dat #header ook niet onder 'n bepaalde breedte kan komen.
Als je al 'n breedte in % op wilt geven, dan moet je de hoogte niet invullen. Dan blijven de verhoudingen hetzelfde en krijg je geen lachspiegel. Maar dit is vrijwel nooit 'n goed idee.
Maar alles bij elkaar: als ik het scherm verklein, blijft alles netjes in verhouding staan en zo, dus de grote lijn is goed.
Edit:
#info heeft 'n vaste hoogte, en er staat tekst in. Als ik de letters vergroot, komt dat buiten #info te staan. Soms kan dat, als eronder toch lege ruimte is. Maar anders is het misschien beter om geen hoogte op te geven. Dus dat je ook 'n zekere flexibiliteit in de hoogte inbouwt; Maar dat moet je wel heel goed testen, ook met zoomen en andere lettergroottes, want 'n flexibele #info moet natuurlijk niet je #footer ruïneren of zo.