After playing with features to provision a site to SharePoint i came across a few problems (like provisioning default.aspx) and a few problems which are solvable with features but feel like a hack. I decided to look at “site definitions” and it works like a charm. So i would recommend using a site definition when you are creating a site from scratch. The definition is focused in one big XML file (ONET.XML).
These blog posts helped me create my site definition:
You can drop the created definition into a Visual studio solution and create a SharePoint WSP file to install at the server. You can use wspbuilder to create a WSP from from a solution.