I have been working with the feature xml documents.
There is an insideous bug that you need to be aware of: the name and the guid for a custom field must both be unique.
If you reuse the name of a field when creating a custom type then when the type is activated the duplicate field will be silently dropped – no warnings or errors. This took me a day to track down – I was wondering why the view that I built on a list was missing some columns. When I checked these were thecolumns that I had used in an earlier prototype.
There is another catch – you may need to recycle the app pool between un-registering and re-registering features. Sharepoint seems to prefer to use the cached values rather than the newly supplied ones.
The above was exasperated by the substandard documentation supplied with the product. While there is lots to read, it is incomplete and contains errors.
It appears that Sharepoint 2007 was realeased too soon – the internal design is not consistent (three styles of guid are required to register a content type!), the error handling is patchy – varies from excellent (exactly which field is incorrect) to vague (a field is wrong somewhere).