That's a "problem" that arises often if some Null (may it be a number, a vector, the empty set or whatever) is involved. Many properties hold at once for the Null (so your statements (1) and (2)) or are obviously not satisfied (like $0\in\mathbb R$ can't be inverted).
So, when you are going to define some mathematical terms (e.g. "orthogonal" or "parallel"), you have to decide:
- Define it by an easy to check property (like $a$ is orthogonal to $b$ if and only if $a\cdot b = 0$)
or
- Define it with respect to some vivid picture that somewhat generalises the everyday experience (like $a$ is parallel to $b$ if and only if they point in the same direction).
As mathematics deals with rather general terms, in general the first option is preferred (unless you work onlay with simple structures, where the second option is easier to grasp).
This approach works very well, but with the consequence that in simple cases the statements sound a bit odd if compared to the everyday experience. (As the Null vector is orthogonal to itself, or - regarding group theory - as the trivial permutation is a symmetry.)
In your case you have to consider the given definition of "orthogonal" and "parallel".
- If vectors $a$ and $b$ are orthogonal to eachother if and only if $a\cdot b = 0$ per definition, then the Null vector is orthogonal to every other vector and the case is closed.
- If vectors $a$ and $b$ are orthogonal to eachother if and only if they define a specific direction and these directions interact in a special sense, then you have to alter your used theorem to "If $a\cdot b = 0$ then either $a$ is orthogonal to $b$ or $a$ or $b$ is the Null vector."
(As you see, the second more vivid definition causes theorems where special cases are excluded, which is very annoying when working with a bunch of such theorems. You have always to check if there is maybe some Null.)
In short: It all depends on the used definition of some mathematical term.
The two values you call vector projection and scalar projection are more tightly linked than your deifinitions seem to imply. In fact, by definition, we have that for two vectors $\vec a,\vec b$, the cosine of the angle between the two vectors is defined to be $$\cos\theta = \frac{\vec a\cdot \vec b}{|\vec a||\vec b|}$$
which means that what you call "the scalar projection of $\vec a$ along $\vec b$", which is $|\vec a|\cos\theta$, is in fact equal to $$|\vec a|\cos\theta = |\vec a| \frac{\vec a\cdot \vec b}{|\vec a||\vec b|} = \frac{\vec a\cdot \vec b}{|\vec b|}.$$
Note that this value is precisely the length of what you call the "vector projection of $\vec a$ along $\vec b$". Also, since the length of the vector is a scalar, while the vector projection itself is a vector, it is very common to just use the word "projection" in common mathematical language, because in the vast majority of cases, it is clear from context whether we are talking about a vector (and thus a vector projection) or a scalar.
Additionally, there is the word "component". This word will most almost always denote a scalar quantity, and is tightly linked to the concept of projections. In particular, in $\mathbb R^n$, the $i$-th component of a vector $x\in\mathbb R^n$ is equal to the scalar projection of $x$ along the $i$-th basis vector.
This idea can be greatly generalized. If you are familiar with what a basis of a vector space is, then you might remember that if $B=\{b_1,\dots,b_n\}$ is a basis for a vector space $X$, then any $x\in X$ can be uniquely represented as $x=\alpha_1b_1+\cdots+\alpha_n b_n$. The common terminology is to refer to the values $\alpha_1,\dots,\alpha_n$ (which are scalars) as the components of $x$ in the basis $B$.
Now, you might already be sensing the connection between scalars projections and components. Indeed, if $B$ is an orthogonal set, then $\alpha_i$ is precisely equal to the scalar projection of $x$ along the vector $b_i$.
So, with all that out of the way, you can look again at the post you link as your question. The accepted answer states that "$\dfrac{\vec a \cdot \vec b}{|b|}$ is the component of $\vec a$ along $\vec b$." What this sentence is saying is basically "In any orthogonal basis in which $b$ is one of the basis vectors, $\dfrac{\vec a \cdot \vec b}{|b|}$ is the component of $a$ belonging to $b$ in that basis".
In that sense, the answer you link is correct, as long as you understand the implicit facts behind it :).
Best Answer
$\newcommand{\Brak}[1]{\langle #1 \rangle}\DeclareMathOperator{\proj}{proj}$If $A$ and $B \neq 0$ are vectors (in an arbitrary inner product space, with the inner product denoted by angle brackets), there exists a unique pair of vectors that are (respectively) parallel to $B$ and orthogonal to $B$, and whose sum is $A$. These vectors are, indeed, given by explicit formulas: $$ \proj_{B}(A) = \frac{\Brak{A, B}}{\Brak{B, B}}\, B,\qquad \proj_{B^{\perp}}(A) = A - \proj_{B}(A) $$ The first is sometimes called the component of $A$ along $B$, and the second is the component of $A$ perpendicular/orthogonal to $B$.
The point is, the component of $A$ perpendicular to $B$ is unique (unles you have a definition that explicitly says otherwise) so "no", you need not/should not take both choices of sign.