Question: Is it possible to define a content type, a custom column, a list instance and associate the contenttype to the list using xml, all within the same feature or do they need to be seperated into seperate features?

All the best

Answer: 
You should always use appropriate feature scoping. In your scenario you would need:

* A Site Collection scoped feature which would deploy the Content Type and the Site Column
* A Web scoped feature which would deploy the list instance and associate the content type.

This is the best way and the best practice to achieve your goal. If they are related then you should add a FeatureActivationDependency as well.
It should work fine in a signle feature also.