Neben den bereits genannten Unterschieden gibt es einen weiteren, wichtigen Unterschied. `\vspace` löscht explizit das Gedächtnis bezüglich des eingefügten Abstandes, nachdem der Abstand intern mit `\vskip` eingefügt wurde, was `\vskip` selbst natürlich nicht tut:
\documentclass{article}
\newlength{\letzter}
\begin{document}
Test\par\vspace{1cm}
\setlength{\letzter}{\lastskip}Der letzte vertikale Abstand war \the\letzter.
Test\par\vskip 1cm
\setlength{\letzter}{\lastskip}Der letzte vertikale Abstand war \the\letzter.
\end{document}
Was zunächst wie ein unwichtiger Unterschied erscheinen mag, wird relevant, wenn `\addvspace` ins Spiel kommt. Diese Anweisung funktioniert nämlich so: War ein unmittelbar zuvor eingefügte vertikale Abstand betragsmäßig kleiner als der Betrag des bei `\addvspace` angegebene, angegebenen, so werden die Abstände nicht addiert, sondern der letzte zuerst entfernt und dann nur der neue eingefügt. War ein unmittelbar zuvor eingefügter vertikaler Abstand betragsmäßig größer als der Betrag des bei `\addvspace` angegebene, angegebenen, so führt `\addvspace` zu gar keinen keinem vertikalen Abstand. Mit einem `\vspace` unmittelbar zuvor eingefügten vertikalen Abstand funktioniert dies nicht, weil der damit eingefügte Abstand für TeX als 0pt erscheint.
erscheint. Der Abstand von `\addvspace` wird nach einem `\vspace` daher immer komplett zusätzlich eingefügt.
\documentclass{article}
\begin{document}
Test\vspace{1cm}
\addvspace{2cm}
Dieser Text ist 3\,cm entfernt.
Test\vskip 1cm
\addvspace{2cm}Dieser Text ist 2\,cm entfernt.
Test\vspace{1cm}
\addvspace{.99cm}
Dieser Text ist 1,99\,cm entfernt.
Test\vskip 1cm
\addvspace{.99cm}Dieser Text ist 1\,cm entfernt.
\end{document}
Relevant kann das beispielsweise bei aufeinander folgenden Überschriften werden.