My apologies, I'm bouncing all over the place with this, but some things I've learned about AI:
If you want to control every aspect of running trains, it does not replace the "Dispatcher" role in and of itself, this is where your driver commands come in. Clear, concise instructions of where to go and when - much as if you were issuing Track Warrants or Form D's (real railroading, I'm not going to go into that detail, Google is your friend if you must know). Account for every "control point" (or "interlocking") on the route of which track to take, etc. If you want to setup a meet for the train to take a siding, you might be better off having Triggers and having that train "wait for" the other train to hit a trigger before continuing, but keep in mind if the other train hits the trigger before the first train is actually at that step in the command list, it'll wait there forever.
That being said, if you just want to set, forget, and watch trainz zip all over without caring about what they actually do (or in some cases, sit back and watch the world burn), give them all simple "Drive to" or "navigate to" commands for the far end of the route and watch them all interact. It's actually kinda funny sometimes but certainly not "real world".
Other things to keep in mind - Drivers will think for only themselves and attempt to get from point A to point B in the shortest/fastest way (depending on whether you're using Drive or Navigate). Priorities of trainz mean nothing as far as who goes first, it's simply an attempt (and I mean attempt, not foolproof) to get trains to use certain tracks, where you can use different limits to try to get them to let the other go first, but again, not foolproof. If you have a priority 1 and Priority 3 train approaching the same converging switch and the P3 train happens to lock it first, too bad, he's screwed over your passenger express. This is why I say the "Dispatcher" role you play is important to get it setup right, if you want the real world experience. A lot of work goes into setting this up to resemble a real operation before you can ever jump in the driver seat of your own train and interact with them, and even then they'll typically find some way to screw it up.
The commands are parsed one at a time. There's no "looking ahead" like a real engineer might do. This can work to your advantage for real-world ops or disadvantage for seriously un-real-world actions. For example, say you have a local freight running the branch line, stopping at every industry spur. If you just tell it to drive to the industry, it will set the switch as soon as it can (i think there's some distance limitation but don't remember) and drive right into the spur at track speed until it hits the limit for the spur. Very unreal, especially if it's a hand-thrown switch. If you tell it to drive to a trackmark just prior to the switch, wait 10 seconds, then drive to the industry it will stop at the trackmark (make sure it's far enough away), wait, set the switch, then drive in (as if the conductor got out and threw the switch himself). Conversely, though, you don't always want that happening at a junction on a main line that would be controlled from a tower or the CTC dispatcher, so you need to figure out, with signalling and such, how far in advance you want the switches to be aligned, keeping in mind that this could cause other trains excessive waits if the whole thing isn't timed right. Or if it's too late the driver will have to approach the junction at a reduced speed because the points aren't aligned for a route and he needs to obey the approach signals before the junction can be switched.
Cornfield meets were another big one when setting up real-world signals on a single track, but I think this has been improved with newer signal libraries, both built in and in particular third-party stuff on DLS (NS37/JointedRail has a decent library that helps prevent this, as does RRS I think) but at one time the signals would only look one block ahead and you could have two trains pass sidings at opposite ends and get stuck a block away from each other, both refusing to move, because they had clears or approach signals leading into the single track, but then encountered dangers a block away from each other. This is the reason why you'll find tutorials, particularly the one above, that state it's much easier just to setup two-track one-way running from the start, but if you're simulating real world this isn't right, nor is the idea of not putting signals mid-way on a single track. This is also another reason why proper timing and command setup is crucial. If you only have one or two other trains to interact with at a time, this is fine (portal-to-portal, one or two at a time), but if you're trying to setup a real-life busy yard or something, it becomes a painstaking process of trial and error. I have yet to release any routes/sessions, but I've always had the feeling that if I were to, there'd be about 3 months of just setting up AI, running the scenario, adjusting, running again, adjusting, running... All to make sure things went relatively smoothly for other players to have fun.
AALLLLLLLLLLL that being said, from my understanding, the Trainz AI is still a cakewalk compared to setting up non-player trains in MSTS and RW/TS, but I've never tried in either of those so I could be misunderstanding previous comments. (Basically it isn't AI, from what i remember reading... it's all hand written)
Edit: Another plan I've had for a future session I may release, is that if you want to setup a good real session where AI trainz interact properly and on a schedule, setup one train at a time, have it run it's planned route with stops and such, and sit there with a stopwatch and a piece of paper (or a google spreadsheet works too) - Time it out, see how long without other trains it takes to get to each point, perform tasks, etc. Do this for each train separate from the others, then work it out into an actual timetable. After you get everything together, you'll probably have to adjust the timetable (and I doubt the AI will run it the same way twice without extremely precise commands), but it'll give you a good place to work from. Then if you want to get really daring, throw an "extra" into the mix and see what happens, either with another AI, or with you as the driver of the extra. Pay attention to where you'll have to wait for other trains, see if they suddenly take an unusual route...