For FFP you can have a look at e.g. this site:
http://www.e-reading-lib.org/bookreader.php/143437/Pike_-_DirectX_8_Programming_Tutorial.html
There you can find some example, how to calculate normals and also setup lighting. But today, even with DirectX9 you should give HLSL a try. The FFP is also just emulated by shaders in modern DirectX.
And shading does not depent on view or projection. For directional light it only uses the light direction and the normal for each vertex. The normal is still the same, when you translate or scale the vertex. Just when rotating you have to rotate your normal too.
For a terrain, the position of each vertex shouldn't alter between two frames. So when your shading differs when changing the viewing position you have some influences by transformed vertices.