Changing the projection reference point in Open GL
Eye position, projection reference point PRP, camera center, or projection center are all just different words for the same thing. 

gluLookAt() applied to the GL_MODELVIEW matrix works for both, parallel and perspective projection.

You can choose between parallel and perspective projection by setting up the GL_PROJECTION matrix. For perspective projection this can be done using the gluPerspective() function.

Creating a perspective projection matrix in OpenGL

Edit: (after revised question)

If the PRP is not at the eye position, you can not use gluPerspective(). Instead you have to create your own GL_PROJECTION matrix. Following the formula that you have now provided, this results in the 4 x 4 matrix:

$$\mathtt{A} =\begin{bmatrix} z_c-z_{pp} &amp; 0 &amp; -x_c &amp;  x_c \cdot z_{pp}\\ 0  &amp; z_c-z_{pp}  &amp; -y_c &amp; y_c \cdot z_{pp} \\ 0 &amp; 0 &amp; \frac{\mathrm{far}+\mathrm{near}}{\mathrm{near}-\mathrm{far}} &amp; \frac{2 \cdot \mathrm{far} \cdot \mathrm{near}}{\mathrm{near}-\mathrm{far}} \\ 0 &amp; 0 &amp; -1 &amp; z_c \end{bmatrix}
$$

I have done a quick OpenGL/WebGL rendering test with the GSN Composer. Follow the link and move the mouse over the render output to change $x_c$ and $y_c$ of the projection reference point $(x_c, y_c, z_c)$:

Example: ProjectionReferencePoint | GSN Composer