Let $x,y$ be two vectors in a (real or complex) Hilbert $C^*$-module $\mathcal{H}$
over a $C^*$-algebra $\mathcal{A}$.
The angle $\angle(x,y)$ between $x$ and $y$ can be defined in several ways.
When $\mathcal{A}=C_0(X)$ is a
commutative $C^*$-algebra, in other words, $\mathcal{H}$ is a continuous field of Hilbert spaces
over a locally compact space $X$, we define
the cosine of the angle, $u=\cos \angle(x,y)\in C(X)$, by the equation
$$
|\langle x, y\rangle| = |x||y|u.
$$
We show that if $T: \mathcal{H}\to \mathcal{K}$ is a linear module map between two Hilbert $C_0(X)$-modules preserving (cosines of)
non-flat angles,
then $T=\alpha J$ for a bounded, strictly positive and continuous scalar function $\alpha$ on $X$
and a module into isometry $J:\mathcal{H}\to\mathcal{K}$.
For a Hilbert $C^*$-module $\mathcal{H}$ over a
non-commutative $C^*$-algebra $A$, we study the cases when $u=0$ or $u=1$, namely,
the orthogonality or the parallelism of two vectors $x,y$ in $\mathcal{H}$.
While the linear orthogonality preservers are well studied in previous works,
the problem of describing linear parallelism preservers seems to be rather difficult.
After presenting some intrinsic properties of different versions of parallelism,
considering the example of $\mathcal{H}=A=M_n$ of a matrix algebra, we show that
any bijective linear map $T:M_n\to M_n$ preserving various types of parallelism
in two directions assumes either the form $TA=\alpha UAV$ or $TA=\alpha UA^tV$
for some positive scalar $\alpha$ and unitary matrices $U,V$ in $M_n$.