I'll start with some basic answers to these and mix in some history to get to where we are now.
In terms of the practicalities of planning, what would you use as a map reference source? An OS map? Google earth? One or other or both in conjunction with Quaill maps? I recall mention of a Google API - is that purely for terrain, altitude, or can that be used for location of assets too?
Back in Rail Simulator days routes were created simply by either plotting the track co-ordinates with pins or drawing lines in Google Earth and exporting them as an .xml file, with some jiggery pokery these could then be seen in Rail Simulator. You could lay track based on these and then reference Google Earth and other mapping sources to place scenery. It was very difficult, time consuming and not very accurate.
When Railworks arrived a very clever chap called Jim created a program called RWDecal. This program worked with Google Earth and took snapshots of the area you had chosen. These could then be exported and placed in the route editor allowing you to add tracks and scenery directly over them, if you will it was a long winded pre-cursor to the system we have in place now.
Now Google Maps are implemented into the editor itself which makes life so much easier, at least for routes that are still in existence. It does require a Google account and billing information but don't be alarmed about this. Google automatically give you a $200 free monthly credit which is equivalent to 28,000 requests by your API key per month. Using me as an example as somebody who uses it for hours on end, i've never ever exceeded 250 requests in a day. Basically it's impossible to exceed their limit and billing is more concerned with commercial entities who pull hundreds of thousands of requests per month.
Dovetail have a good article
here about obtaining your API key and implementing it into Train Simulator.
You mentioned terrain, this is called Digital Elevation Model or DEM for short. Basically they are terrain files created by satellites looking down on earth and it provides a topographic dataset for the whole planet. These files can be downloaded (by region or area) and placed in a specific folder in your Train Simulator install, it can then read these and implement the terrain for your chosen route. Be aware that they aren't completely accurate and some manipulation is required. Note that you also want to make a decision about whether you are going to use real world terrain before starting a route, it's a tough ask if you want to add it to a route you've already built!
Matt has an excellent video about this
here.
In terms of buildings, etc, a route creator will need a very good knowledge of assets to pick from. Do you need to create many assets yourself? How hard is it? Are there programs that help you do it?
Research, research, research. Decide which route you are building and study the routes you own to see what best matches what you want. This includes things like the terrain texture set you want to use on your route, track type, platform type etc. Think about where you are going to release the route if that is your plan. Want to release on the workshop? Don't use any requirements that aren't available from Steam.
Creating your own assets is entirely up to you, it isn't explicitly required to create and release a route and even if the exact bridge or building that you want isn't available from the requirements you are building from, things can be resized moved around and placed together to make a decent enough representation. Probably the most common assets people create for themselves are simple objects such as station signs. There are modelling programs out there that can do this and
Blender is a free example, but bear in mind whilst a station sign is a basic object in modelling terms, it's not as straightforward to create textures and export before creating a blueprint to make it usable in Train Simulator.
If you were placing trees along the lineside, do you have to "plant" every one, or are there assets comprising a 100m or so of trees you can replicate to make the process easier and quicker?
Depends how accurate you want to be! If you are creating a real life route on a Google Map overlay you will place trees one at a time in some cases. In other cases there are lines of trees which can be placed lineside and there are groups too. In some cases these are also what was termed as 'flexirow' meaning you can place them and they will hug the terrain elevation.
There are also asset blocks which are particularly useful for creating more distant scenery such as tree rows and forests but these should only ever be used for 2D assets and not the 3D stuff you often see lineside. These blocks can be placed in all shapes and sizes to follow vegetation areas on the overlay and then populated with a few clicks, it's fairly easy to do large swathes of distant trees in minutes.
I'd also highly recommend
this tutorial. In the early days we only had very minimal 'hotkeys' to perform different functions as well as a limited set of buttons in the editor to perform different functions. That tutorial pretty much sums up every advancement made in the editor and provides loads of great information on the route editor itself.