In addition to the definitions that Jan provided you should also consider the usage behind them. While tags are useful, I think they are the least useful of all of them. I say this because there is very little structure around them and little to no permissions/security. Meaning the content editor can add their own tags whenever they want. Also tags can only be used for documents/pages they cannot be used for other objects.
Categories are very strong because in most cases you can add multiple categories to an object which allows you to apply some very good taxonomy to that object. Using categories in the content tree is easy as well especially for your webparts. In a repeater for example you can select all the documents in "Category 1". Whereas if you want to "get all the documents tagged 'my tag'" it would involve a complex WHERE clause on the repeater.
Related pages are similar to categories although categories are a grouping of like items whereas related pages can be more of a 1 to 1 relationship or similar items.