yes article defines
\newcommand\tableofcontents{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
}
so you could define
\newcommand\tableofcontentsA{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toca}%
}
then use
\addcontentsline{toca}{chapter}{Annexes}
instead of
\addcontentsline{toc}{chapter}{Annexes}
This will store the headings in a filename with extension .tocA and input that file at the point where you use \tableofcontentsA. Note as there are @ in the command names the definition needs to be in a package file or between \makeatletter \makeatother
If your annexes are using sectioning commands that are internally writing to the .toc file so that you can not easily just write to toca you can redefine the internal writing command to write to toca if passed toc as argument like so:
\let\oldaddtocontents\addtocontents
\def\addtocontents#1{%
\def\tmpa{#1}%
\def\tmpb{toc}%
\ifx\tmpa\tmpb
\def\tmpa{toca}%
\fi
\expandafter\oldaddtocontents\expandafter{\tmpa}}
In the standard classes (and most none standard ones) this will make all the sectioning commands write to .toca from the point of redefinition.
so a complete document
\documentclass{book}
\makeatletter
\newcommand\tableofcontentsA{%
\chapter*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toca}%
}
\makeatother
\begin{document}
\tableofcontents
\chapter{aa}
\chapter{aaa}
\appendix
\let\oldaddtocontents\addtocontents
\def\addtocontents#1{%
\def\tmpa{#1}%
\def\tmpb{toc}%
\ifx\tmpa\tmpb
\def\tmpa{toca}%
\fi
\expandafter\oldaddtocontents\expandafter{\tmpa}}
\tableofcontentsA
\chapter{bbaa}
\chapter{bbaa}
\end{document}