A regular signal only checks the next block. A chain signal looks ahead through the next block(s) until it finds a regular signal — and only goes green if the train has a clear path all the way to it.
Why each signal is where it is
Approach (left side: R · R · C → X)
The two regular signals just chop the long approach into blocks so multiple trains can follow each other — pure throughput.
The chain signal right before X is the important one. It looks ahead through the split. If the depot path is full, or the main-through path is full, the train waits before X and never stops on top of the junction.
Just past the split (X → R on each branch)
Each branch gets a regular signal within one train length of X. These are the "exit signals" the upstream chain signal reads. Without them, the chain would have nothing to look ahead to.
The depot
Inside the depot, use regular signals between stalls so multiple trains can queue. Stopped trains here are off the main line — blocking is fine.
Approach to the merge (C → Y on both legs)
Both inbound legs of Y get a chain signal. A merge has the same hazard as a split: if a train commits to Y but can't clear it (because the block after is full), it sits across the merge and chokes the other leg. Chain says: "only enter Y if you can get all the way to the regular signal beyond it."
Past the merge (Y → R · R · …)
A regular signal within a train length of Y gives the upstream chain signals something to read. Then more regular signals down the line for throughput.
The recipe, abstracted
Chain signal on each inbound side of every junction (split or merge), right before it.
Regular signal on each outbound side, within one train length of the junction.
On long stretches between junctions: regular signals at intervals for throughput.
Stations / depots: regular signals only — stopped trains there don't block the network.
The thing that trips people up: a chain signal needs a regular signal somewhere ahead to look at. Step 1 only works because step 2 exists.