On the very basic level you can control your tags using URL rules. This can include several use cases however sometimes you need more control over where and when to fire a tag.
Or you might need additional info about the visitor like the geographical parameters or some attributes of pages and posts that the user visited.
The so called Data Layer can connect your website with your Google Tag Manager container and let you fire your tags on certain special conditions or use additional data in your data collection. The data layer might seem to be a persistent storage while checking your setup, however it is not. It is created on each page load and destroyed when that page unloads. Therefore you always need to consider whether a specific data layer variable is available on a specific page. It might not the case everytime,