The signals are similar to path signals in OpenTTD, if you are familiar with that. (There is nothing like block signals.)
In Distributrains, trains work by reserving a path towards their destination. A train has to wait if the path it tries to reserve overlaps with the reservation of another train. If they see (the front side of) a signal while trying to reserve a path, then they stop reserving there. In essence, signals are used to shorten the path reservations to reduce conflicts.
There are two signal types: One-way Signals can never be passed from the back side, and Back-traversable Signals are ignored from the back side.
The rules are simple, and trains will never crash, but using signals optimally can be difficult. The game has a couple tutorials about this. Active path reservations are always drawn on the tracks, there is a pathfinding visualiser, and an option to draw signal direction arrows on the tracks.