Correct post-displacement normal calculation (Y-component and epsilon)
The Epsilon is chosen to hit the appropriated Nyquist-Frequency avoiding aliasing. It refers to the highest frequency in your heightfield function. You'll need well knowledge of the definition of your function to find it. For example, the figure shows an iterated Brownian motion (IBM) which approximate Perlin noise. The frequency of each added noise function is given by . So the Epsilon would be the last added frequency: . That means the Epsilon is predefined for each Noise.



IBM by Hugo Elias approximating Perlin Noise.


  Might this be related to unprojecting mouse clicks? It always bothered me that you could throw a '0.5' in the Z-component, as mrdoob mentioned here:


Your first question has nothing to do with mouse picking in my opinion. Your mouse is defined in normalized-device-coordinates (NDC) meaning a click in a window is ranging from -1 to 1 in each direction. The Z component is not given since our screen is just 2-dimensional, meaning we have to select a value from -1 to 1. -1 refers to the near plane and 1 to the far plane.

For further information on that topic: 
https://www.youtube.com/watch?v=DLKN0jExRIM&amp;t=371s