Categories are broad topical areas that you create in order to group your posts, and identify their content area to search engines. There is no one correct way to create categories. Pick a schema of categories that makes the most sense for your website content. Avoid “uncategorized”. It’s fine to classify posts as belonging to more than one category, but if many posts fit in more than one category that is not in a parent-child relationship (sub-category) then one might consider merging some categories.
Likewise, for a large site, if you have very few posts in a particular category, why is that? If it’s a genuinely new topic that you expect to write more about, good on ya. But if it’s a overly-fine subcategory of a larger category (e.g. “left-handed baboon”, a subcategory of “baboons”), it’s a good idea not to create extra categories with overly-narrow content. Just tuck that one back up into it’s parent category, and use a tag instead.
If you have more than 25 categories (just to pick a random number), review your classification schema, and ask if it’s still meaningful. Sometimes you just have to go back and reorganize.
Tags are different from categories. They represent aspects of your content that do not fall into your classification scheme, but tell search engines and users about semantically meaningful content. Example: you have a category called “Sunk Ships” and you are considering whether to create a subcategory called “The Titanic” or a tag called “The Titanic.” If “The Titanic” is an important concept in your blog, and you expect to make many more posts about it, then make a subcategory. But if your website’s content is “Things Under the Ocean” rather than “My Favorite Ships” then you should favor making “The Titanic” a tag rather than a category. You do not need a tag for an article that is the same as your category; I think you should avoid that. I violate that precept in this blog (notice the category and tags for this post) so I won’t hold you to following what I just said! In general: Tags are for the fine topical details that do not appear as a category.
If you have over 100 tags, that is a lot, but they may serve a good purpose, especially on a content-rich site, and if the tags are intimately revealing about the content. If you have a lot of tags that only pertain to a single post, ask yourself if each tag is truly meaningful. If it is, fine.
As a WordPress website ages, there is a risk of over-proliferation of categories and tags. Once and a while it’s good to review how they’re being used across your site.