A Tag is a method to add to an object properties or attributes that the object would not contain by default. As you can imagine, the potential properties or attributes that an object may contain is rather large, and can be difficult to manage, depending upon the approach. Tags are a very clean and concise method to allocate and manage only the properties that you want or need an object to have.
Other DCC applications have similar concepts, and may use the term attributes or properties as well, but the tag method is far more efficient to deal with, as opposed to long lists or panels to wade through to find what you need. Instead, you can go right to the tag in the Object Manager.
Tags can be almost anything, from a selection set to shading information to a baked cache or even an expression. You can tell the tag type by the icon that appears in the list in the Object Manager, next to the object that owns the tag(s). Information for specific tags are viewable and editable in the Attribute Manager. Tags can even allow you to add custom information to an object or a specific tag directly; this is particularly useful for specialized tasks such as rigging.