Both products distribute
The vector product distributes over addition: a × (b + c) = a × b + a × c. The dot product does too: a · (b + c) = a · b + a · c.
Check it on a = (2, 1, 3), b = (1, 0, 2) and c = (0, 4, 1). b + c = (1, 4, 3), so a · (b + c) = 2 + 4 + 9 = 15. Separately, a · b = 2 + 0 + 6 = 8 and a · c = 0 + 4 + 3 = 7, and 8 + 7 = 15.
Expanding
The square of a length is a dot product: . So .
Distributivity lets this expand like brackets of numbers: a · a + a · b + b · a + b · b. Two facts tidy it. , and the dot product is commutative, b · a = a · b. So .
In the same way, .
Lengths without components
The expansion needs only three numbers: the two lengths and a · b. With |a| = 3, |b| = 2 and a · b = 1, , so .
A second example: |a| = 4, |b| = 3 and a · b = 5 give .
The vector product keeps the order
(a + b) × (a − b) expands to a × a − a × b + b × a − b × b. The vector product is not commutative, so each term keeps the order it was written in.
a × a = 0 and b × b = 0. b × a = −(a × b), so b × a adds another −a × b. The result is −2(a × b).
Check it with a = (1, 0, 0) and b = (0, 1, 0). a + b = (1, 1, 0) and a − b = (1, −1, 0), and their vector product is (0, 0, −2). a × b = (0, 0, 1), and −2(a × b) = (0, 0, −2).
A difference of squares
With the dot product, , because the middle terms cancel.
This is 0 exactly when |a| = |b|. In a rhombus the two sides from one corner are equal in length, and the diagonals are a + b and a − b, so the diagonals of a rhombus are perpendicular.
The usual slips
Dropping the middle terms. is not : the 2a · b is there unless a and b are perpendicular.
Adding the lengths. is only when a and b point the same way, which is when a · b = |a| |b|.
Swapping the order in a vector product. b × a = −(a × b), so (a + 2b) × (a − b) is −3(a × b), not a × b.