In endnotes.sty, \theendnotes is defined as follows:
\def\theendnotes{\immediate\closeout\@enotes \global\@enotesopenfalse
\begingroup
\makeatletter
\edef\@tempa{`\string >}%
\ifnum\catcode\@tempa=12%
\let\@ResetGT\relax
\else
\edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
\@makeother\>%
\fi
\def\@doanenote##1##2>{\def\@theenmark{##1}\par\begingroup
\@ResetGT
\edef\@currentlabel{\csname p@endnote\endcsname\@theenmark}%
\enoteformat}
\def\@endanenote{\par\endgroup}%
\enoteheading
\enotesize
\input{\jobname.ent}%
\endgroup}
All you need to do is to hack this to remove the \pars inside the definition. Here is the MWE, where two \pars are just removed:
\documentclass{article}
\usepackage{endnotes}
\makeatletter
\def\theendnotes{\immediate\closeout\@enotes \global\@enotesopenfalse
\begingroup
\makeatletter
\edef\@tempa{`\string >}%
\ifnum\catcode\@tempa=12%
\let\@ResetGT\relax
\else
\edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
\@makeother\>%
\fi
\def\@doanenote##1##2>{\def\@theenmark{##1}\begingroup
\@ResetGT
\edef\@currentlabel{\csname p@endnote\endcsname\@theenmark}%
\enoteformat}
\def\@endanenote{\hspace{1em}\endgroup}%
\enoteheading
\enotesize
\input{\jobname.ent}%
\endgroup}
\makeatother
\begin{document}
One\endnote{this is the first endnote. this is the first endnote.} two\endnote{this is the second endnote. this is the second endnote.} three \endnote{this is the third endnote.}
\theendnotes
\end{document}
You can change the space between endnotes by modifying the amount of \hspace{1em}.
