The command \l@chapter in book.cls typesets the chapter entry in the table of contents. It adds 1.0 em vertically before the entry. So, to remove that space before the first entry, you could redefine that macro or add a negative vertical skip before you start the first chapter, such as
\addtocontents{toc}{\vskip -1.0em}
\tableofcontents
\chapter*{foo}
Actually, the macro contains also a glue of 1 pt. From book.cls:
\newcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}