Your attempt \present doesn't even call \checknextarg... In order to simplify the code, I'll assume the number of arguments is of the form 4n + 2, where n is a positive integer. Otherwise, more tests are needed.
Note:
\dimexpr doesn't need parentheses where you put them.
\bigskip\\* doesn't make much sense because \bigskip itself is a legitimate breakpoint in most cases (it is one as long as what precedes it is a non-discardable item of the vertical list: a box, a whatsit, a mark or an insertion—see TeXbook p. 110, or the very short introduction below).
Also, beware of introducing unwanted spaces.
Regarding your precise problem, you can do something like this:
\documentclass{article}
\makeatletter
\newcommand{\presentation}[2]{%
\begin{minipage}[t]{\dimexpr \linewidth - 3em}
\textbf{#1}\\*
#2\smallskip
\begin{itemize}
\setlength{\itemindent}{-0.15in}%
\checknexttoken
}
\newcommand{\checknexttoken}{\@ifnextchar\bgroup{\onemoretime}{\finished}}
\newcommand{\onemoretime}[4]{%
\item #1 -- #2 #3 #4%
\@ifnextchar\bgroup{\onemoretime}{\finished}%
}
\newcommand*{\finished}{%
\end{itemize}
\end{minipage}
\par
% \nopagebreak % uncomment if you want to prevent page breaks here
\bigskip
}
\makeatother
\begin{document}
\presentation{Title}{Items:}{first}{second}{third}{fourth}
\presentation{Title}{Items:}
{first}{second}{third}{fourth}
{fifth}{seventh}{eighth}{ninth}
\presentation{Title}{Items:}
{first}{second}{third}{fourth}
{fifth}{seventh}{eighth}{ninth}
{tenth}{eleventh}{twelfth}{thirteenth}
\end{document}

In case you need to have an opening brace at the point where you would like the argument grabbing to stop, just insert a \relax in your text before the brace so as to prevent a “next round” from being triggered.
Quick notes on page breaking
When you finish a paragraph in outer vertical mode, each of its lines forms a horizontal box which is therefore a non-discardable item of the main vertical list. Each such line is followed in the main vertical list by vertical material that has “migrated out” (from \vadjust, \insert, \mark...), penalties (for club or widow lines, etc.) and automatically-inserted interline glue. Glue items and penalties are both potential breakpoints, under certain conditions. In the frequent case where a horizontal box representing a paragraph line is immediately followed by a glue item in the main vertical list (glue which could be obtained for instance from a \bigskip immediately following the paragraph, or from interline glue automatically added between two consecutive lines), because the box is by definition non-discardable, this glue item is a legitimate breakpoint (i.e., a page break may take place right after the box and would normally discard the glue item: glue items are discardable ones).
\nopagebreak inserts a penalty, which is a discardable item, therefore a \nopagebreak immediately preceding something like \bigskip that inserts a glue item in the main vertical list, prevents the glue item from being a legitimate breakpoint. \par just switches to vertical mode. It doesn't insert anything like a glue item, a box or a penalty by itself.
\bigskipWhen I don't include\\*my second\presentationgets to the right of my first. When I include\\*it gets typeset below. – agf1997 Jul 07 '19 at 20:22\\does cause a line break. If you remove it, no line break occurs. What I was trying to say is that the star form doesn't make sense after a\bigskip, because the point of using\\*as opposed to\\is that\\*normally prevents page breaking. But if what precedes is\bigskip, the\\*won't prevent page breaking to occur at the\bigskip, so the star is only giving a false sense of security. To avoid unwanted page breaks, one has to make sure there is no legal breakpoint. Adding\\*after a breakpoint doesn't prevent anything. – frougon Jul 07 '19 at 20:27