I'd consider instead what makes bad tags to help answer that question. Ideally, tags are ways to help connect people with questions, not a way to classify the contents of a question. So, for example, ubuntu-desktop was a terrible tag. No one really wants to watch the ubuntu-desktop tag. In addition, the bug
, crash
, and error
tags are horrible in that they're describing the content of the post, but no human will ever really want to follow the bug
tag for one of two reasons. One, we're not a bug tracker. Two, it doesn't help convey any real meaning. However, things like specific software being used, wine, php, juju, ubuntu-one make more sense as there's a chance people with knowledge of that software will follow. There are also a few additional tags, like application-development which connect a subject matter (not a physical piece of software) with people who know and specifically work on application development.
Tagging isn't an easy thing, which is why it has a high reputation entry level for creating a new tag. If you're uncertain if a tag is good or not always feel free to post on meta. It's better to figure out early on if a tag is a good idea before it becomes an unruly beast