I would suggest you use the programming language that you feel the most comfortable with. I would use C# since you get a lot of tools for building UI around your map editor.
In terrain generation, there are a number of approaches depending on how you want to represent your terrain (i.e I) semi-voxel based like Minecraft, II) a continous surface with hills and valleys, or III) a pure 3D modelled terrain (enables overhanging cliffs, caves and the likes). One pretty neat approach is called the Diamond-square algorithm which is explained here. This generates a height-map similar to II), that can be used for coordinates in the terrain, with each pixel representing a fixed (x, z) location, and its gray-value representing its height (y-value).
I hope this helps you in some way at least!