1: You can use a Logic Hook for Contacts module.
After relationship add and after relationship delete for all history modules like notes, Tasks etc.
When a new record is associated with contact, you can also associate it with the opportunity. And this record will start showing up under opportunities detail page.
It may not happen automatically, yet you can do it by some custom code. Help Links:
2: Or you can create your own custom subpanel in Opportunities module. And in there you can do the query to get all the related contacts history items. (I suggest this solution) as it is more performance efficient. No duplicate records in relationship tables will be added. Help Links: