An alternative way to think about it is geometrically. The graph of $y=x^2$ is a parabola that opens up with vertex at the origin. The graph of
$$y = (x-b)^2$$
is then a horizontal shift by $b$ units (so $b$ units to the right if $b\geq 0$, and $|b|$ units to the left if $b\lt 0$) of the same graph. There is still only one root: the vertex.
If $a\neq 0$, then
$$y = a(x-b)^2$$
is a vertical stretch of this graph, possibly with a flip (if $a\lt 0$); it does not change the number of intersections with the $x$-axis.
Finally, $$y=a(x-b)^2 + c$$
is a vertical shift by $c$ units (up if $c\gt 0$, down if $c\lt 0$).
If $y=a(x-b)^2$ is a parabola that opens "up" (if $a\gt 0$), then shifting it up ($c\gt 0$) will remove all intersections with the $x$-axis; and shifting it down ($c\lt 0$) will create two intersections with the $x$-axis as the vertex moves down.
If $y=a(x-b)^2$ is a parabola that opens "down" (if $a\lt 0$), then the situation is reversed: $c\gt 0$ will create two intersections with the $x$-axis, and $c\lt 0$ will remove all intersections with the $x$-axis.
Either way, in order to maintain one and only one intersection, you need the vertex of the parabola to stay on the $x$-axis, so you need $c=0$. Conversely, if $c=0$, you have a parabola with vertex on the $x$-axis, hence with a single intersection.