Categories are meant for broad grouping of your posts. Think of these as general topics or the table of contents for your site. Categories are there to help identify what your blog is really about. It is to assist readers finding the right type of content on your site. Categories are hierarchical, so you can sub-categories.
Tags are meant to describe specific details of your posts. Think of these as your site’s index words. They are the micro-data that you can use to micro-categorize your content. Tags are not hierarchical.
For example if you have a personal blog where you write about your life. Your categories can be something like: Music, Food, Travel, Rambling, and Books. Now when you write a post about something that you ate, you will add it in the Food category. You can add tags like pizza, pasta, steak etc.
One of the biggest difference between tags and categories is that you MUST categorize your post. You are not required to add any tags. If you do not categorize your post, then it will be categorized under the “uncategorized” category. People often rename the uncategorized category to something like Other, ramblings etc.
Another difference is the way your category and tags permalinks (urls) look. If you are using a custom permalink (URL) structure, then your base prefix will look different. Example:
http://yoursite.com/category/food/
vs.
http://yoursite.com/tag/food/