There are a lot of tools that facilitate this in Mathematica.
For rendering terrain ListPlot3D is a very direct solution. You could outgrow it if you wanted terrain involving overhangs etc, but it is a great starting point.
The interesting problems remain generating interesting height data and textures. Here's a quick example!
rawData = RandomReal[{0, 2.5}, {10, 10}];
deltaAdjust[data_] := Sign[data] Abs[data^(1/2)]
dimension1 = Accumulate[deltaAdjust[Prepend[Differences[rawData], rawData[[1]]]]];
dimension2 = Accumulate[deltaAdjust[Prepend[Differences[Transpose[rawData]],
Transpose[rawData][[1]]]]];
interestingData = dimension1 + dimension2;
TableForm[{{ListPlot3D[interestingData, InterpolationOrder -> 1,
ColorFunction -> Function[{x, y, z},
RGBColor[{0, 0.35, 0} (1 - z) + {1, 1, 1} (z)]], Mesh -> Full],
ListPlot3D[interestingData, InterpolationOrder -> 2,
ColorFunction -> Function[{x, y, z},
RGBColor[{0, 0.35, 0} (1 - z) + {1, 1, 1} (z)]], Mesh -> All]}}]