There are two things you are missing: you are missing the case in which $a\geq 0$; and you did not really justify your assertion when $a\lt 0$.
Technically, the only case you actually established was the case $a=-2$. That leaves quite a few values of $a$ untouched!
When one asserts that something happens "for all numbers less than $0$", it is almost never good enough to check what happens in one number less than $0$. That's called "argument by example", and examples almost never establish general cases. It would be like trying to argue that everyone in your class is going to fail by pointing to one student in the class who happens to be failing. It's certainly possible that all will fail, but just showing one person who will is not going to establish this.
So: first, you need to finish off the case $a\lt 0$: if $a$ is any number less than $0$, why is $f(x)=(x+a)^2$ not one-to-one on $[0,\infty)$? Because, no matter what $a$ is, you can always find at least two distinct points in $[0,\infty)$ on which the function takes the same value: $x=0$, and $x=-2a$ (which is positive because $a\lt 0$, and so both in the domain and different from $0$). Indeed, $f(0)=(0+a)^2 = a^2$, and $f(-2a) = (-2a+a)^2 = (-a)^2 = a^2=f(0)$. You'll note that this takes care of all the values of $a$ that are negative. (Note: These are not the only points you can use; for instance, $\frac{-a}{2} and $\frac{-3a}{2}$ will also have equal images. But to show that something is not one-to-one it does suffice to give a single example of two distinct points that map to the same thing, because the assertion "is not one-to-one" means "there is at least one pair $a,b$, with $a\neq b$ and $f(a)=f(b)$).
Now, we also need to deal with the case $a\geq 0$. What happens then? If $a\geq 0$, then $x+a\geq 0$ (since $x\geq 0$). If $f(x)=f(y)$, then we have:
\begin{align*}
f(x) &= f(y)\\
(x+a)^2 &= (y+a)^2\\
\sqrt{(x+a)^2} &= \sqrt{(y+a)^2}\\
|x+a|&=|y+a|
\end{align*}
(remember that $\sqrt{r^2}=|r|$). Now, because $x$, $y$, and $a$ are all nonnegative, so are $x+a$ and $y+a$, so they equal their absolute value: $|x+a|=x+a$ and $|y+a|=y+a$. So we get $x+a=y+a$, and so we deduce $x=y$. That is, if $a\geq 0$, then for $f(x)$ to equal $f(y)$ we must have $x=y$. This means that in this case, $f$ is one-to-one.
In summary: you forgot to check $a\geq 0$. And you did not fully establish $a\lt 0$. It's not enough to just "it is not one-to-one when $a\lt 0$", because this is only says what happens if $a\lt 0$; your answer is not presumed to be exhaustive (that is, we don't assume that you are telling us all the values in which it is not one-to-one) because you are not saying it is exhaustive (to do so, you would have to say "it is not one-to-one if and only if $a\lt 0$", and even then you would have to discuss what happens when $a\geq 0$).