Consider a linear map ${ A : \mathbb{R} ^n \longrightarrow \mathbb{R} ^m . }$ Consider its adjoint ${ A ^T : \mathbb{R} ^m \longrightarrow \mathbb{R} ^n . }$
Note that in ${ \mathbb{R} ^n }$ the maps give subspaces ${ \text{ker}(A) }$ and ${ \text{im}(A ^T) . }$
Note that ${ \text{im}(A ^T) \subseteq \text{ker}(A) ^{\perp} . }$
Let ${ x \in \text{im}(A ^T) . }$ We are to show
$${ \text{To show: } \quad x ^T y = 0 \quad \text{ for all } y \in \text{ker}(A) . }$$
Note that ${ x = A ^T x _0 . }$ Let ${ y \in \text{ker}(A) . }$
Then note that ${ x ^T y }$ ${ = x _0 ^T A y = 0 , }$ as needed.
Note that ${ \text{im}(A ^T) }$ and ${ \text{ker}(A) ^{\perp} }$ have the same dimension.
Hence
$${ \text{im}(A ^T) = \text{ker}(A) ^{\perp} . }$$
Note that replacing ${ A }$ with ${ A ^T }$ we have
$${ \text{im}(A) = \text{ker}(A ^T) ^{\perp} . }$$
Hence the action of ${ A }$ and ${ A ^T }$ is given by

Note that the images ${ {\color{blue}{\text{im}(A)}} }$ and ${ {\color{green}{\text{im}(A ^T)}} }$ are effectively the ${ {\color{blue}{\text{column space}}} }$ and ${ {\color{green}{\text{row space}}} }$ of ${ A }$ respectively.
Here are some example observations from the above “4 fundamental subspaces” picture:
Note that ${ \mathcal{N}(A ^T A) = \mathcal{N}(A) }$.
Note that ${ \mathcal{R}(A ^T A) = \mathcal{R}(A ^T) }$. (Alt proof: The inclusion ${ \subseteq }$ is clear. Then from a dimension argument we get equality).
Note that roughly speaking, every linear map ${ A }$ sends its row space to its column space. (The only interesting images ${ Ax }$ are when the inputs ${ x }$ are in the row space of ${ A }$).
Note that if we append orthonormal bases of null space of ${ A }$ and row space of ${ A }$ (note that these can be computed by row reduction and Gram-Schmidt process) we get a good orthonormal basis of the domain.
And so on.