Pointer 1 = Object
Pointer 1 contains the address of Object.
Pointer 2 = Pointer 1
You assign the value of Pointer 1 to Pointer 2. The value of Pointer 1 is the address of Object. So Pointer 2 also contains the address of Object.
Pointer 1 = Object 2
Pointer 1 changes, but Pointer 2's value don't change. So Pointer 2 still contain the address of Object.
The things is a pointer contains the address, i.e. the value of a pointer variable is an address of memory. If you assign this to another pointer, then this address is assigned just like normal integer. However, pointing to a pointer (that is a pointer to pointer or **) is different from assigning a pointer to another.
You can google "C pointer tutorial" (well, Obj-C is superset of C and the pointer came from C part. Nothing special in Obj-C) for a better understanding. I would recommend this book specially for beginners.