I have two cubic bezier curves. Here are their control points P0,P1,P2,P3:
{1.7168784, 4.7644997}, {2.2067976, 5.6362677}, {2.2067976,30.078318}, {17.864204, 30.078318}
and
{1.7168784, 4.7644997}, {2.7, 11}, {3.7, 30.078318}, {17.864204,
30.078318}
When I plot them, I can see the curves look very similar, although the control point differences are distinct.
However the curvature of these curves seems wildly different:
I don't know how to say it mathematically, but this difference in curvature is surprising to me. For example, if I want to know how fast to make an unbanked turn along a curve, the speed is related to sqrt(1/abs(curvature)), which is 16x for one curve vs the other. Yet my intuition from looking at the plot is that either turn ought to be taken at a similar speed.
I am aware the difference has something to do with the denominator of curvature becoming small,
lim (dx[t]^2 + dy[t]^2)^(3/2)) -> 0
which in turn, is related to a small distance between P0 and P1 (for t==0. For t==1, small distance between P2,P3). However, it's unclear to me "how far" they ought to be to avoid distorting the curvature in this manner. In this example the distance between P0 and P1 is 1, which is evidently insufficient.
Is there a different expression for curvature that is more robust in the denominator? Or is there a way to select "new" control points to use in the curvature expression, so that a similar curvature can be calculated when curves have similar paths?



I don’t think you’re suffering hugely from numerical problems, so it won’t help to use a different formula for calculating curvature.
The curve with the red control points has a fairly severe (but small-scale) inflexion near its start. Near this inflexion, curvature is large, and this makes the scales of your two curvature plots very different.
You say that the curvatures are “wildly different”. You can’t tell if this the case or not, because the scales of the two curvature graphs are so different. If you use the same scale on your two curvature plots, you’ll see that the curvatures of the two curves are roughly the same, except near the inflexion point at the beginning.
Another problem with your curvature graphs (possibly) ... It looks like you’re graphing curvature as a function of curve parameter, $t$. But the two curves are parameterized very differently, so (for example) $t=1/2$ will give you different points on the two curves. So, you should expect the two curves to give you different curvatures at $t=1/2$ because you’re measuring curvature at two different points. You need to graph curvature against arclength (which is much harder to do, unfortunately).