How should I move a custom field to a different custom fieldset?
Mostly you will want to move fields between customs fields sets used for the same entity (ie from one custom field set used for participants to another custom field set used for participants.)

This can be done easily through the UI as follows:


Go to Administer > Customize Data and Screens > Custom Fields
If it doesn't already exist create the new field set.
Return to Administer > Customize Data and Screens > Custom Fields and select View and Edit Custom Fields for the field set containing the field you want to move.
On the far right of the row containing the field you want to move click on More > Move. 
Select the the new field set.


However, if you want to move a field from a field set used for Individuals to a field set used for Contacts or vice versa you will get an error message "The destination group extends a different entity type." 

In that situation or similar involving a single branch of contact subtypes:


Back up your database.
Using phpMyAdmin or otherwise, in civicrm_custom_group
find the field set with the most restricted contact type and edit the Extends field to match the value in the field set with the least restricted contact type. (eg change "Individual" to "Contact".)
In the UI move the field as described above.
Using phpMyAdmin or otherwise change the Extends value you altered in 2. back to it's original value.


NOTE: 1. I haven't tried moving fields between a field set used for Organizations and one used for Individuals.