For a new project at work, I'm beginning to get the hang of content types and site columns. I think it's best practice to:
1. first think which content types you need in your project
2. create (or re-use) site columns in your content type
3. then create lists or pages based on your content type
All this is made by me in the Sharepoint UI and then exported to a feature. An interesting option to export is to use the stsadm extensions from Gary Lapointe. With this tool, you can create the elements file to use in your feature. In my experience, you still need some tweaking in the XML but other then that it's working like a charm. I'm working on a simple windows application to do the same, only with a friendly UI. If that is finished, I will probably post this on my blog.
Happy sharepointing ;)