In so far as I can find, they've added a couple of extra things to team_train_watcher - one to declare the team of the train (TeamNum, blu=3 and red=2) and one to declare whether the train can recede in what I assume is the "normal" fashion (train_can_recede, 0 in pipeline's case).
There's a "tf_logic_multiple_escort" which I'm not familiar with, that might allow the use of multiple team train watchers per round, perhaps?
Other than that, business as usual. The mentioned logic_branches basically do what OnTrainStartRecede usually does - if "n" is where you want payload to stop receding (like the bottom of a hill, for instance), when the payload passes path_track "n-1", it triggers the branch. At path_track "n", it sends value "1" to the branch, which sets the speed of the cart to a negative value (ie, it recedes), and activates sparks and such. When it reaches the "top of the hill" or equivalent, "0" is sent to the branch, which sets the speed of the cart to 0.
Valve also seem to like disabling path_tracks just before the bottom of the hill - I suppose that works just as well as sending more values to the logic_branch.
For example, the cap 1 branch:
When the cart passes path_track 25: The branch is triggered and enabled - the later on a 0.1 second delay (not sure why, but there you go).
When the cart passes path_track 26: path_track 24 is disabled, and a value of "1" is sent to the branch.
When the cart passes path_track 27 (top of the "hill"): path_track 26 is disabled, and a value of "0" is sent to the branch.
Of note: In area 3, they modify the base rate of the train to accommodate for the hills. They halve it, in case you're wondering.
The cross-sections use different branches, and lord knows how those branches end up shown beautifully on the HUD, but there you go.
The cap-areas also seems to have new outputs - there's now "OnNumCappersChanged2", used on both - different functionality to the original?
EDIT: Gosh darn it, I should spend less time writing.