BezierCurves are part of Mathematica! What luck....

http://reference.wolfram.com/language/ref/BezierCurve.html

Here is a single Bezier cubic:

pts={{0,0},{1,-2},{2,-1},{3,2}};
Graphics[{BezierCurve[pts],Green,Line[pts],Red,Point[pts]}]

As you can see, the two middle points are not interpolated: they are responsible for determining the initial direction of the curve as it departs the first point, and the direction as it approaches the last; also for “pulling” the curve -- the further the second point from  the first, the more the curve will stretch out toward it, etc. 

Here’s a curve created from pasting together two Bezier cubics:

pts={{0,0},{1,1},{2,-1},{3,0},{5,2},{6,-1},{7,3}};
Graphics[{BezierCurve[pts],Green,Line[pts],Red,Point[pts]}]

You can even do Bezier curves in 3d:

pts={{0,0,0},{1,1,10},{2,-10,1},{3,1,2}};
Graphics3D[{BezierCurve[pts],Green,Line[pts],Red,Point[pts]}]