This is taught very poorly in calculus courses, and you're confused because the notation is sloppy.
The insight you seek is the following1:
Before I go on, it's critical that you understand the following terminology:
A ("formal") parameter is a property of the function description itself.
For example, the $a$ and $b$ in the function definition $f(a,b) = a + b$ are parameters.
An argument, or "actual" parameter, is a property of an expression that is a call to a function.
For example, the $x$ and $y$ in the expression $g(x) + g(y)$ are arguments to $g$.
Now here's the kicker: if $h(x) = x^2$ then partial and total derivatives can be different:
\begin{align*}
\frac{\partial}{\partial x} f(x, h)\ =\ 1\ \color{red}{\neq}\ 2x+1\ =\ \frac{d}{dx}f(x,h)
\end{align*}
Makes sense? :-)
I hope it doesn't, because it was sloppy.
The notation above is extremely common, but not really correct.3
Remember I just told you partial derivatives are with respect to parameters whereas total derivatives are with respect to variables. This means that, if we've defined $$f(a,b) = a + b$$ as above, then it's actually incorrect (although very common) to write $$\frac{\partial}{\partial x}f(x,h)$$ for three reasons:
$x$ is not a parameter to $f$, but an argument to it. The parameter is $a$.
The second argument to $f$ should be a number (like $h(x)$), not a function like $h$.
$f(x, h)$ is not a function, but a call to a function. It evaluates to a number.
So, to really write the above derivatives correctly, I should have written:
\begin{align*}
\left.\frac{\partial f}{\partial a}\right|_{\substack{a=x\phantom{(h)}\\b=h(x)}}\ =\ \left.1\right|_{\substack{a=x\phantom{(h)}\\b=h(x)}}\ =\ 1\ \color{red}{\neq}\ 2x + 1\ =\ \frac{d}{d x} f(x, h(x))
\end{align*}
at which point it should be obvious the two aren't the same.
Makes sense? :)
1 This should be easier to understand if you know a statically typed programming language (like C# or Java).
2 You can define partial derivatives for expressions as well, but it'd just be implicitly assuming you have a function in terms of that variable, which you are differentiating, and then evaluating at a point whose value is also denoted by that variable.
3 Notice the expression wouldn't "type-check" in a statically typed programming language.
Best Answer
The solution is straightforward: just do the algebra.
Note $\nabla f=\langle3x^2-y,-x\rangle$, so, with $\mathbf{c}=\langle c_1,c_2\rangle$, we have $$\nabla f(\mathbf{c})=\langle 3c_1^2-c_2,-c_1\rangle$$ But $\mathbf{b}-\mathbf{a}=\langle1,2\rangle$, so $$\nabla f(\mathbf{c})\cdot(\mathbf{b}-\mathbf{a})=3c_1^2-c_2-2c_1$$ You want this to equal $f(\mathbf{b})-f(\mathbf{a})=-2$ subject to the constraint that $$\mathbf{c}=\mathbf{a}+t(\mathbf{b}-\mathbf{a})=\langle0,1\rangle+t\langle1,2\rangle=\langle t,2t+1\rangle$$ for some $t\in[0,1]$. So set $c_1:=t$ and $c_2:=2t+1$ and substitute into the equation $$3c_1^2-c_2-2c_1=-2$$ Then solve for $t$.