The transformations that preserve this metric are called, "Lorentz transformations," and they include spatial translations and rotations, as well as "boosts," which are changes to motion at constant velocity with respect to the original frame.
Now in Galilean transformations, where we "boost" in Newtonian spacetime, say in the x-direction, for example, the new x-coordinate depends on the old x and t; but the new t is just equal to the old t. If you perform two boosts in succession, v₁ and v₂, the combined boost has a velocity, v, that is just the sum of the two boost velocities,
v = v₁ + v₂
In a Lorentz transformation, both the new x and t, depend on both the old x and t. This means that when you perform two boosts in succession, the combined boost has a velocity that isn't just the sum of the two boost velocities, but
v = (v₁ + v₂)/(1 + v₁v₂)
where each velocity is expressed as a fraction of c. So with v₁ and v₂ both less than 1 in absolute value, |v| will also be < 1. That is, you can never exceed c by boosting repeatedly by any speed < c. And if one of the boost speeds is c, then the resulting speed will be c, no matter what the other boost speed is.
To answer your specific questions:
• "why can't it travel at 2c?" -- because the geometry of spacetime doesn't allow that. For one thing, there would be frames in which it would be seen traveling backward in time.
• "for a train traveling at 20 m/s and a guy in the train throws a ball at 20 m/s, then an outside observer would see the ball traveling at 40 m/s" -- actually, at
(20 + 20)m/s /(1 + (20/299,792,458)²)
which is smaller than 40 m/s by a few parts in 10^15, a difference from the Galilean result which no one could possibly even measure. If those were (⅔)c ≈ 200,000,000 m/s each, then the ground observer would see the ball traveling at
400,000,000 m/s /(1 + 4/9) ≈ 277,000,000 m/s ≈ (12/13)c