In SharePoint 2007 you can make features dependent on each other so that FeatureB can only be activated if FeatureA is. If this isn't the case it will prompt you with a message to activate FeatureA first:
Now, when you mark FeatureA as HIDDEN the Feature Dependency will automagically active it when FeatureB is activated ! How cool is that !? This means you can have FeatureA with all your content types and columns and FeatureB with some code to manipulate those items with the guarantee that they have been created.
This voids the following question: "What if you have a feature with Site Columns and Content Types in XML, but also code in the Feature Receiver that manipulates those items ? Will the code run before or after the XML ?"
If you declare your Site Columns and Content Types in XML to deploy them as a Site Collection feature, you must make sure to ALWAYS include the <FieldRefs> node. If you leave it out then your Content Type will not have any of the inherited fields of the parent Content Type !!!
Group="Custom Content Types">