Another major stumbling block for train signals once you get the basics down is segment length. Signals indicate whether the next segment is occupied, not whether any given train will fit in there (and potentially block a segment or intersection behind it.)
I frequently set up tracks with segments as large as my longest train, but then end up having to add an intersection here or there, breaking up segments into smaller sizes. This is the root of most of my train woes (aside from LTN issues, which are a whole other issue!)