It is hard for computers to determine which words or phrases in a given chunk of text are important and which are not. People understand what is important based on context and current knowledge. Computers can approximate this, but not very well. They need help in the form of metadata: data about data.
One way to help computers (and thus, ourselves) is to create a taxonimies, or hierarchies of keywords, to apply to objects, such as books or websites. Unfortunately, hierarchies enforce rules that are not always correct or convenient; for example, think about the fish that have lungs and the mammals that lay eggs. An alternative to taxonomies is ontologies, made up of triples. The idea is to relate a subject to an object by a predicate: Luke Breuer owns this computer. This solves the fish and mammal problem, but still requires control over vocabulary. The Dublin Core Metadata Initiative is an example of controlled metadata.
Enter tagging, a ground-up approach. Take this picture and associate one or more terms with it: "pretty", "ocean", "night". Someone else picked the word "beautiful" instead of "pretty". Using this example, I could guess that "pretty" and "beautiful" are synonyms. Given enough people tagging the same object, computers can get a pretty good idea of what an object is and how it relates to other tagged objects. Peter Morville, in his book Ambient Findability, quotes Devid Weinberger: "The old way creates a tree. The new rakes leaves together" (139). This is the power of tagging: nobody has to maintain them, the bad tags get weeded out, and relationships are built from the ground-up instead of designed from the top-down. The result of tagging is a folksonomy, driven by the people, for the people.