The most important advantage of a pointer is that it can be used to share large chunks of data from one function to the other (as an argument).
This prevents the making of a copy of these data.
Making copies of large chunks of data would quickly fill the stack (you would run out of RAM) and would take significant time... (slow down execution of your program).
As already said by others: arrays and c-strings are pointers under the hood. So, pointers are basically everywhere ...
It is a very powerfull tool of many computer languages and because pointers are so powerfull, they can also make a huge mess when used in the wrong way...