Consider the following MWE:
\documentclass{article}
\usepackage[showframe]{geometry}
\begin{document}
\bigskip
This is a test.
\end{document}
This renders as follows:
As you can see, the \bigskip fails to leave a vertical space. This is a common nuisance, which I normally deal with by preceding the command with either \hbox{}, or ~. For instance:
\documentclass{article}
\usepackage[showframe]{geometry}
\begin{document}
\hbox{}\bigskip
This is a test.
\end{document}
renders:
What I want to know is (1) why does this happens, (2) why do \hbox{} and ~ work here, and (3) what is the best practice around this issue. (I imagine this has to do with vmode and hmode, but I don't really know what's going on.)


\hspace*{\bigskipamount}is the correct one. – egreg Oct 15 '15 at 14:39~produces a paragraph with a full white line of text then the bigskip, so you get\baselineskipmore vertical space and potentially get a page break between the white paragraph and the skip so would still lose the skip but have an anomalous white line at the top of the page. The vertical spacing with~is just as if you usedX(with\hboxit's more complicated, but still bad) – David Carlisle Oct 15 '15 at 14:43\vspace*, not\hspace*in my previous comment. Fixing David's typos introduced some noise. ;-) – egreg Oct 15 '15 at 16:06