Explanation about Pointers

Hello all,
I'm far away of being a C expert but I want to learn more and more about C because I'm loving it.I want to learn about pointers, I had started reading some info but I have some questions to make, it could sound stupid questions but in my head I need to clarify them.My questions are:
What is the main advantage of using pointers?
I mean when does I should consider using a point or a normal variable?
Pointers points to memory locations using *, knowing this what can I do in terms of operations inside functions?
From what I read pointers are a little hard to understand and I'm also share this opinion 8)
Can someone give me a well explanation?
Thanks for all

Rather than copying data you can pass a pointer to a block of memory, pointers can be used instead of passing via reference.
Traversing memory is very useful in certain situations, pointer arithmetic makes it easy.

You can cast the address of some location to a different type giving it completely different semantics.

Arrays are pointers in disguise / pointers are arrays in disguise.

Pointers can take away stability by allowing things like modifying const data and breaking protected and private encapsulation.

The concept of pointers can be hard, but very useful...

What is the main advantage of using pointers?

You can pass a pointer to a function that needs to modify the pointed to data, rather than making the data global. There are some functions that return pointers. You must learn to deal with those functions, so that means that you must understand pointers. After a while, you'll understand that this question is rather meaningless.

I mean when does I should consider using a point or a normal variable?

The context will define when one or the other is appropriate. No sense try to use one then the other is the correct type to use.

Pointers points to memory locations using *, knowing this what can I do in terms of operations inside functions?

A pointer is declared using the *. That has nothing to do with the fact that a pointer simply points to some memory location. In a function that receives a pointer, you dereference the pointer to get/set the pointed to data.

From what I read pointers are a little hard to understand and I'm also share this opinion

So are many things you are not familiar with. After a while, you'll wonder why you ever had trouble understanding/using/appreciating pointers.