Why should the scalar product of the components along two axes remain unchanged after transformation?
Your question
The scalar product depends on the length of the vectors and the angle between them. Rotations, translations and mirror operations do not change distances or angles (i.e. don't distort objects), so the scalar product is unchanged as well. There are other operations that do (stretching, warping, etc).
The proof
Without knowing the context, the proof seems wrong. Equation [2.18] is not general and only works for orthogonal coordinate systems. To give a simple example: if the b axis is not perpendicular to the c axis, and we rotate on a twofold along c, the b axis will not be transformed into -b, but rather into a linear combination of b and c. What this proof shows is that if axes are orthogonal, they are orthogonal (tautology).
What is true is that if there is a two-fold axis along c, you can always choose the two other axes such that they are orthogonal to c. This is a choice, however, and other choices are possible.

In the figure, b and c are not perpendicular. Points at the origin, at the tip of b and the tip of c are equivalent by translation. If there is a crystallographic twofold rotation along c, there is another equivalent point at the tip of the rotated b. The rotated b is not the same as negative b, as the figure illustrates by counter-example. However, if you want perpendicular axes (and that is the choice recommended by the international tables), you can switch from the axis b to the thin line (shown as dot-dash-dot-dash), giving you a new axis perpendicular to c. In the case shown, the lattice is now face centered.