Typically we have a generative grammar that tells us how a sentence is generated from a set of rules. Parsing is the process of finding a parse tree that is consistent with the grammar rules – in other words, we want to find the set of grammar rules and their sequence that generated the sentence. A parse tree not only gives us the POS tags, but also which set of words are related to form phrases and also the relationship between these phrases.
Shallow parsing is the process of being able to get part of this information (parse tree). POS tagging is like getting the last layer of the parse tree – only the part of speech tags like verb/noun/adjective… associated with individual words. Chunking another common technique gets the POS tags and which words are together to form phrases (This is like reading the last two layers of the parse tree).