If you draw circles at those points, they will centre on the point by default which may be easier than trying to adjust the arrow length:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}
[
square/.style = {draw, shape=rectangle, minimum height=1cm, minimum width=1cm, node distance=2cm, line width=1pt},
]
\node[square] (1a) at (0,0) {};
\node[square] (1b) at (1cm,0) {};
\node[square] (2a) at (3cm,0) {};
\node[square] (2b) at (4cm,0) {};
\node[square] (3a) at (6cm,0) {};
\node[square] (3b) at (7cm,0) {};
\node[square] (4a) at (9cm,0) {};
\node[square] (4b) at (10cm,0) {};
\node (1) at (0,-2) {1};
\node (2) at (3,-2) {2};
\node (3) at (6,-2) {3};
\node (4) at (9,-2) {4};
\foreach \i / \j in {1b/2a,2b/3a,3b/4a,1a/1,2a/2,3a/3,4a/4}
{
\draw [-latex] (\i.center) -- (\j);
\path [fill] (\i.center) circle (1.5pt);
}
\draw (4b.north east) -- (4b.south west);
\end{tikzpicture}
\end{document}

Alternatively, you could shorten the start point of the arrow by the radius of the circle. Roughly:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}
[
square/.style = {draw, shape=rectangle, minimum height=1cm, minimum width=1cm, node distance=2cm, line width=1pt},
]
\node[square] (1a) at (0,0) {};
\node[square] (1b) at (1cm,0) {};
\node[square] (2a) at (3cm,0) {};
\node[square] (2b) at (4cm,0) {};
\node[square] (3a) at (6cm,0) {};
\node[square] (3b) at (7cm,0) {};
\node[square] (4a) at (9cm,0) {};
\node[square] (4b) at (10cm,0) {};
\node (1) at (0,-2) {1};
\node (2) at (3,-2) {2};
\node (3) at (6,-2) {3};
\node (4) at (9,-2) {4};
\foreach \i / \j in {1b/2a,2b/3a,3b/4a,1a/1,2a/2,3a/3,4a/4}
{
\draw [*-latex, shorten <=-2pt] (\i.center) -- (\j);
}
\draw (4b.north east) -- (4b.south west);
\end{tikzpicture}
\end{document}

But the adjustment would need to be tweaked to get this exactly right.
For example:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
[
square/.style = {draw, shape=rectangle, minimum height=1cm, minimum width=1cm, node distance=2cm, line width=1pt},
]
\node[square] (1a) at (0,0) {};
\node[square] (1b) at (1cm,0) {};
\node[square] (2a) at (3cm,0) {};
\node[square] (2b) at (4cm,0) {};
\node[square] (3a) at (6cm,0) {};
\node[square] (3b) at (7cm,0) {};
\node[square] (4a) at (9cm,0) {};
\node[square] (4b) at (10cm,0) {};
\node (1) at (0,-2) {1};
\node (2) at (3,-2) {2};
\node (3) at (6,-2) {3};
\node (4) at (9,-2) {4};
\foreach \i / \j in {1b/2a,2b/3a,3b/4a,1a/1,2a/2,3a/3,4a/4}
{
\draw [{Circle[length=4pt]}-latex, shorten <=-2pt] (\i.center) -- (\j);
}
\draw (4b.north east) -- (4b.south west);
\end{tikzpicture}
\end{document}
will give you circles with radius of 2pt (diameter 4pt) which will be centred if you shorten the arrow by 2pt.
