For refueling I've recently been using the cybersyn mod, which let's you easily create a refueling stations that your trains will automatically go to when they're low on fuel (with exactly how "low" they need to be being configurable in the mod settings).
I just plop down a refueling station, and a requester station next to it that refuels the refueler and I'm done. Don't have to worry about it again.
I always make them refuel at one of their regular stops. There's usually a source of fuel nearby, so I just route a small part of that along all the engines.
But sometimes I forget, and sometimes there's no fuel nearby.
My most complex train system had every train carry a single item type, and a large central trainyard. trains won't leave without an active destination. so all of the destinations for dropping off a type had the same name, and similarly the pick ups and would be disabled by circuits if their dropoffs were more than a quarter or so full. so if something needed green electronics, it would activate its DropOffGreenElectronics, the train would leave the yard, or sometimes 2-3 as at the time I didn't have any way of limiting it and one train wasn't enough to service all of the delivery points with my single car trains. the thundering herd problem[1] was real. the first train would get there, rest would go home. everything refueled at the home terminal, which had a stop for the coal train on it. each train had (dropoff(X) -> pickup(X) -> rest(X)) for their instructions. it worked pretty well.
Interesting approach. I do give multiple pickup points for the same name (so while my old coal field is slowly running out, trains increasingly move to the new coal field by themselves), but I hadn't considered doing the same with the drop-offs.
And I haven't yet figured out how to disable drop-offs that don't need anything. I often have a single train bring stuff to a couple of drop-offs, but that always feels sloppy. I have to use timeouts on the trains so they don't linger at a station that's too full to empty them. Disabling those stations and giving them all the same name might be a better alternative.
>And I haven't yet figured out how to disable drop-offs that don't need anything
look into your circuit networks. you can make them quite complex if you want
My simple rules:
* Trains can only stop on the section after a regular signal. If you don't want a train to be able to stop in a certain place (like on an intersection), don't use a regular signal in front of it.
* Make sure trains have places where they can stop. This will mostly be stations, but that's not enough. Actually, I've been wondering if it might be enough for stations that are only visited by a single train; then the train would only go if it has a clear path straight to its destination. Maybe I should give this a try. For me, however, the straights outside the intersections are usually fine places for trains to stop. But for better throughput and less blockage, there should probably multiple tracks, and special tracks for trains waiting to enter a station currently occupied by another train.
* Trains cannot pass a signal on their left if there's not also a signal on their right. You can use this to make certain tracks single-direction. Single-direction is good and easier than double-direction, so of course I mix them, because I'm not playing this game because I like things easy.
* Don't forget to give your trains a place to refuel! This is actually the part I mess up the most.