Best practice for updating progress in an opportunity

Best practice for updating progress in an opportunity

There are multiple ways to update progress via comments, notes, call, actions, etc. at the contact and opportunity level. What is the best way (best practices) to update an opportunity, at the contact or the opportunity level?  for example, I use the BCC feature which is great to show email progress at the contact level, but one contact can have multiple opportunites, and it is not possible to link an email entry to an opportunity. Both the contact and the opportunity have comment fields.

Should I update progress with comments at the opportunity and emails at the contact, or should I update progress all at the contact level only (notes, emails, calls, etc.)?