(from gordon heydon on crm-dev list)
crm_get_locations( ) - should get ALL locations even if they have the same location_type (sorted by is_primary, location_type_id)
crm_delete_location( ) - should take a location ID or something more specific than just location type (since they can be multiple locations of the same type)
crm_update_location( ): should also take a location type ID and be able to update the name.
All the api's should be able to take state/country in their various forms (abbr, name, id)
Please also update the documentation along with the above code changes. Break API function signature as needed.