Off[InterpolatingFunction::dmval];

{{x0,y0}, {x1,y1}, {x2,y2}} = Table[{i/4, i/4}, {i,3}];
LocatorPane[
Dynamic[{{x0,y0}, {x1,y1}, {x2,y2}}],
Dynamic[
ff1=Interpolation[
{{x0,y0}, {x1,y1}, {x2,y2}},
InterpolationOrder->2
];
Plot[ff1[x], {x,0,1}, PlotRange -> {0,1}]
],
{{0,0},{1,1}}
]

DynamicModule[
{n=10, pts, x, y},
pts = Table[{x[i], y[i]}, {i,n}];
Evaluate[pts] = Table[{i,i}/(n+1), {i,n}];
LocatorPane[
Dynamic[pts],
Dynamic[
ff2=Interpolation[
Evaluate[pts],
InterpolationOrder->n-1, Method->"Hermite"
];
Plot[ff2[t], {t,0,1}, PlotRange -> {0,1}]
],
{{0,0},{1,1}}
]
]

Plot[ff2[x], {x,0,1}, PlotRange -> {0,1}]

DynamicModule[
{n=10, pts, x, y},
pts = Table[{x[i], y[i]}, {i,n}];
Evaluate[pts] = Table[{i,i}/(n+1), {i,n}];
LocatorPane[
Dynamic[pts],
Dynamic[
c=BezierCurve[Evaluate[pts], SplineDegree -> n-1];
Graphics[c, PlotRange -> {{0,1}, {0,1}}]
],
{{0,0},{1,1}},
Appearance -> Range[n]
]
]

BezierFunction@@c