Is there an extension to limit activity types to contact types?
You might be interested in this:
CiviCRM: Hide Activity Types (com.joinery.hideactivitytypes)

Hide activity types in one or more ways:

Remove the activity type from the &quot;Actions&quot; list on the Activity Summary.
On a per-contact-type basis: activity type will be removed from the &quot;New Activity&quot; list under a contact's Activities tab, based on the contact's Type or Sub-Type.



Note, however, it only does what's stated above. It won't prevent creating activities in some other way, e.g., via api, or the New Activiy form. (But if  features for more aggressive limitation are desired, I think it would be a good fit to add them.)