Is it possible to make an object rotate so that it faces another object and keep this facing even if any of them is moved.

Just select at least two objects and press CTRL-T and click on the Make Track? dialog which appears.

By default the un-active Object(s) now track the active object so that their local y axis points to the tracked object. This may not happen if the tracking object has already a rotation of its own. You can make a correct tracking by cancelling this rotation (ALT-R) of the tracking Object.

The orientation of the tracking Object is also chosen so that the z axis is upward. You can change this by selecting the tracking Object, switch the Button Window to Animation Buttons (F9) and selecting the Track axis from the first row of 6 Radio Buttons and the Upward-pointing axis from the second (Figure 5).

Figure 5. Setting track axis.

To clear a track constrain select the tracking object and press ALT-T. As for the Parent constrain clearing you must choose if you want to loose the rotation imposed by the tracking or you want to keep it.