Beziers, depending on the implementation, can be rational or not (=have a weight). But they don’t have a concept of spans, knots etc..
A Nurbs curve essentially gives the ability to create a curve out of multiple Bezier curve segments.
Technically this means that a single-span Nurbs curve is equal to a Bezier curve. But of course, if you know you don’t need multiple spans, it is inefficient to store knots in memory and going through the same computational process.
However, if you use a Nurbs-oriented API like Rhinocommon, you still the need the NurbsCurve datatype to access the respective functionality.
No there is no inheritance in Rhino. I don’t know the use-case for BezierCurve in Rhino.
I worked in exterior design in the automotive industry, primarily using a ICEM Surf as the primary CAD platform. It is a standard to represent a car hull with Bezier surfaces only. The reasons are manifold, but also opinionated. Primarily it is believed that Nurbs give away the level on control on a surface layout. The segments are connected on higher continuity automatically, but this does not guarantee a good overall surface. It is also believed that Nurbs tend to overcomplicate the surface model and as such introduce unnecessary error.
all available in a well sorted university library or “comparable”.
Rogers, David F. An Introduction to NURBS. Elsevier, 2001.
https://doi.org/10.1016/b978-1-55860-669-2.x5000-3
Piegl, Leslie Andrew, and Wayne Tiller. The NURBS Book. Springer, 1995.
https://doi.org/10.1007/978-3-642-97385-7
Farin, Gerald E. NURBS: From Projective Geometry to Practical Use. 2nd ed. CRC Press, 1999.
Patrikalakis, Nicholas M., and Takashi Maekawa,. Shape Interrogation for Computer Aided Design and Manufacturing. Springer, 2002
https://doi.org/10.1007/978-3-642-04074-0
if you have any questions reg. NURBS and stuff, just write a PM