OK, let me sum up what do we already have in simutrans:
Signals have speed limit that should be relevant to their visibility (e.g. dwarf, classic, cab signals).
Every way/track has a speed limit, and axle load limit; bridges also total weight limit. You can change the behavior in simuconf.tab:
# This setting allows the way in which weight limits are enforced to be customised.
# The meanings of each setting are as follows:
# 0: weight limits are ignored entirely.
# 1: then vehicles can travel over roads, rails, tunnels and bridges for which they are too heavy, but only at greatly reduced speed.
# 2: Vehicles cannot travel over ways for which they are overweight at all.
# 3: Vehciles cannot travel over ways for which they are more than 10% overweight at all, and will travel on ways for which they are up to 10% overweight at a greatly reduced speed.
#
# To revert to the behaviour of Simutrans-Standard, set enforce_weight_limits=0
enforce_weight_limits=3
Although I don't know what exactly is the "greatly reduced speed".
And we have tilting trains, that can pass curves 30% faster faster.
And what is in real world (Czech railways).
There are different speed limits for:
1. tilting trains - higher speed in corners (cca 35%)
2. 6 axle engines (Co'Co' or 3-3) - lower speed in corners (due to higher wear)
3. selected non tilting trains - slightly higher speed in corners (cca 10%) - perhaps those with better brakes and suspension, multiple units, with possible exceptions for given track,
4. cargo trains - lower speed limit only on some places, specially mentioned in track info.
Example here:
https://cs.m.wikipedia.org/wiki/Soubor:Rychlostniky_Chocen.JPGThe basic speed limit is 80, some engines can go 85 (#3), 6-axle engines 70 (#2), and tilting trains 100 km/h (#1, the tilting speed sign is further back at the signal)
Out of those, we have #1 already implemented. #2 and #3 could be made as generalization of #1. Instead of binary value (tilting or not), could be a % that says how much faster or slower this train can go through corners.
#4 is imho for places where train weight matters like old bridges that do not match the axle load of the rest of the track. This is possible with setting enforce_weight_limits=1.
So far none of these are relevant to signalling - only to track geometry (curves), axle load, and train characteristics.
For signalling there is one important value: braking distance. It is a distance at which train should be able to halt. It of course depends on speed, and is defined:
400 m for speeds < 60 km/h
700 m for speed 60 - 100 km/h
1000 m for speed 100 - 120 km/h
1000 m for speed 120 - 160 km/h with cab-signalling
(higer speed is not allowed in CZ)
All distant signals and 3-aspect signals are built at this distance from next signal. If a train is not capable to break at this distance, it must reduce its speed accordingly. This is partially done in simutrans too. If you put the distant signal too close to the main signal (or not at all), trains will start braking earlier even if the signal is clear. Moreover, trains without cab signalling are limited to 120 km/h. So it seems that the 1 km distance is not enough for higher speeds, and cab-signalling gives you one more block (1 km) to brake. Of course trains do not have to start braking immediately after passing caution signal. The driver has to know how much he needs with given train. (That is also implemented in simutrans). 4-aspect signalling was used to increase capacity by using blocks shorter than braking distance (cca 1970-2010), now it is used only in stations, when you need shorter blocks due to track layout. Again 4-aspect signaling works well in simutrans.
So I think simutrans-extended has all this covered quite well. What exactly are you missing?