Something I don't quite understand: If I used the criteria from either scenario above to create a smart playlist and played that playlist with shuffle mode enabled how would doing that be different than using the same criteria with Play Doctor?
If you've created a smartlist that plays the tracks you want in the order you want, there's no point using Play Doctor. If you don't have or aren't in the mood to select one, you might restrict Play Doctor to, say, one genre, and let it do its thing.
Based on your examples, you're well within the limitations of smartlists. (Don't concern yourself with its limitations. The problem most of us have is we're never quite sure whether an apparent limitation lies with the system or our ability to construct the necessary smartlist.) The easiest way to learn how to use them is to start creating them. You can decide things like what your 'favourites' are as you go (e.g., it might be a combination of [Rating], [Last Played], [Number Plays]). Even when you know what you're doing, the best teacher is the result the smartlist produces.
But then I was unsure if the custom tags are actually stored in the files themselves or just a MC DB thing – which I might not like as I tend to do tag editing outside of MC.
Although I don't see the point, there's nothing wrong with using an external tag editor if that's what you prefer. But restricting the fields you use in MC to those that can be written to file tags in a way that's understood by an external tag editor is a severe and unnecessary restriction. To the extent you have to maintain some compatibility (e.g., your tag editor imports [Rating] from some external source), you can design your use of fields accordingly (e.g., leave [Rating] as is, and use custom [Rating.Borg], [Rating.Borgette] and [Rating.MiniBorg] for user ratings).