- where this pointer stored?
A pointer is stored just like any other normal variable in the memory. Where exactly depends on whether it is a local variable, in which case it is stored in the stack, or a global or static variable, in which case it is stored in a separate memory section for globals.
- how compiler can access this variable?
Not sure what you mean by compiler access here, but you as a programmer can access the variable directly, you can store the address in a pointer and then access it indirectly.
a = p; //Direct access int *ptr; ptr = &p; a = *ptr; // Access the variable indirectly.
As for your third question recommending a website, it is outside the scope of StackOverflow.