Populate or change the selection options in one field based on selected option in another field in the CP
I would write a custom fieldtype (http://buildwithcraft.com/docs/plugins/field-types) with two selects. Makes sense to make it as one field if they are dependent of eachother.

Just store the field as json (AttributeType::Mixed) and inject your own javascript in the fields getFieldHtml()