I think the simplest thing that would work in your application is to show the user 4 special points on the parametric cubic curve, and allow the user to manipulate those 4 special points.
(Allowing the user to pick any point on the curve, and move it, makes things more complicated).
I think this is the same as what Stephen H. Noskowicz calls "Cubic Four Point" representation, aka the quadratic Lagrange with t1 = 1/3 and t2 = 2/3.
While your user is moving those 4 special points U0, U1, U2, U3 around,
periodically you find a cubic Bezier curve that goes through those 4 points using John Burkardt's approach:
P0 = U0
P1 = (1/6)*( -5*U0 + 18*U1 - 9*U2 + 2*U3 )
P2 = (1/6)*( 2*U0 - 9*U1 +18*U2 - 5*U3 )
P3 = U3.
That gives you the Bezier curve representation of the same cubic curve -- a series of 4 control points.
You then feed those 4 control points (the endpoints P0 and P3, and the intemediate control points P1 and P2) into any Bezier curve plotter.
The resulting curve (usually) doesn't touch P1 or P2, but it will start at X0, go exactly through X1 and X2, and end at X3.
(This uses the special points at t=0, 1/3, 2/3, and 1. It's possible to, instead, use the special points at t=1, 1/4, 3/4, and 1, as shown at How do I find a Bezier curve that goes through a series of points? . Or, I suppose, any 4 distinct t values. But I suspect the 0, 1/3, 2/3, 1 values are used most often, and I don't see any advantage to using any other fixed values).
The simplest heuristic approximation method is the one proposed by Tiller and Hanson. They just offset the legs of the control polygon in perpendicular directions:
The blue curve is the original one, and the three blue lines are the legs of its control polygon. We offset these three lines, and intersect/trim them to get the points A and B. The red curve is the offset. It's only an approximation of the true offset, of course, but it's often adequate.
If the approximation is not good enough for your purposes, you split the curve into two, and approximate the two halves individually. Keep splitting until you're happy. You will certainly have to split the original curves at inflexion points, if any, for example.
Here is an example where the approximation is not very good, and splitting would probably be needed:
There is a long discussion of the Tiller-Hanson algorithm plus possible improvements on this web page.
The Tiller-Hanson approach is compared with several others (most of which are more complex) in this paper.
Another good reference, with more up-to-date materials, is this section from the Patrikalakis-Maekawa-Cho book.
For even more references, you can search for "offset" in this bibliography.
Best Answer
Given a quadratic Bezier curve
$$ b_2(p_0,p_1,p_2,t) = (1-t)((1-t)p_0+t p_1)+t((1-t)p_1+t p_2),\ \ 0\le t\le 1 $$
we have the control point as $p_1$ now the question is. Where locate $p_1$ such that the spline passes by $p_0,q,p_2$?
we have for a suitable set $\{t^*, p_1^*\}$ that
$$ b_2(p_0,p_1^*,p_2,t^*) = q $$
so fixing a $0\le t^* \le 1$ and giving a desired $q$ we can determine the control point $p_1^*(t^*)$ by solving
$$ (1-t^*)((1-t^*)p_0+t^* p_1^*)+t^*((1-t^*)p_1^*+t^* p_2) = q $$
Attached a plot showing the case
$$ q = (0.8,0.6) \ \ \mbox{red}\\ p_0 = (0,2) \ \ \mbox{red}\\ p_1^* = (1.66667,0.416667) \ \ \mbox{green}\\ p_2 = (0,-2) \ \ \mbox{red}\\ t^* = 0.4 $$
NOTE
Be aware that $p_1^* = p_1^*(t^*)$