My second Question, is very similar:
in curFace->neighPe[XP] = &curFace->neighFaces[XP]->Pe[0];
Here the & operator is used as reference operator, what means you take the address where curFace->neighFaces[XP]->Pe[0] is stored and saved in curFace->neighPe[XP] pointer.
i have to use the &-Operator, but if i use it in x=fabs(curFace->neighPe[XP]);
Because curFace->neighPe[XP] is a pointer and fabs takes a value. So you need to pass to fabs the value of that pointer using the * operator.