The below links will get you started on the basic features -
https://visionsincode.wordpress.com/2014/11/16/tagging-is-fun-in-sitecore/
https://community.sitecore.net/technical_blogs/b/sitecore_7_development_team/posts/content-tagging-with-sitecore-7
https://doc.sitecore.net/sitecore_experience_platform/content_authoring/managing_items/general/add_a_tag_to_an_item
Now, coming to the surprises...
- While working with the basics, the __Semantics field on my local sitecore instance did not look anything like the articles explain. After some pondering, it turns out my 'raw' view was checked. So, for the multi-value search field to behave and allow selection as expected make sure this is unchecked.
- After adding some new tags into tag repository(), when i go back to tagging section of my item, I did not see the newly added tags in the selection list. This is because tagging depends and reads from indexes. when i re-built my indexes, I could then see the new one's
- Since, tagging is so dependent on indexing, selecting a good indexing strategy is very important. Doing this operation only as often as needed and not overdoing goes long way.
To tackle #3, it would be handy to know the default indexing strategies on master and web databases. For master, the default is syncMaster and for web database, the default strategy is onPublishEndAsync. You can apply different one's as needed, but, in our case the defaults would just do it.
You can read more on indexing strategies available through Sitecore OOTB on the below article, Good reads. :)
https://doc.sitecore.net/sitecore_experience_platform/setting_up__maintaining/search_and_indexing/indexing/index_update_strategies
https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/sitecore-7-index-update-strategies
https://doc.sitecore.net/sitecore_experience_platform/setting_up__maintaining/search_and_indexing/indexing/rebuild_search_indexes