Is there a way to have CiviCRM send me a scheduled reminder for any contact for whom I have not recorded an activity for in 3 weeks or more? So that if 3 weeks go by and I have not recorded an activity for Contact A, I would get an email notifying me of that. Or is there a way to build a report showing all the people who haven't had an activity recorded for in 3+ weeks?
This isn't a current capability, though it's one I've thought about writing on multiple occasions. Unfortunately, my clients have never deemed it something worth the time it would take.
To handle this, I think it would be best to create a custom search that searched for the latest activity. For other use cases, searching only for activities of a particular type is helpful, but it sounds like you don't need that.
Once you have a custom search, you can create a smart group based on it. You can then run reports and/or generate scheduled reminders limited to this group.