Pgfplots has a couple of helper methods which do the job - and these methods are mostly independent of any axis. The only required things are the text labels and the styles for the individual images.
Here is a short draft which might do what you want:
\documentclass{article}
\usepackage{pgfplots}
% argument #1: any options
\newenvironment{customlegend}[1][]{%
\begingroup
% inits/clears the lists (which might be populated from previous
% axes):
\csname pgfplots@init@cleared@structures\endcsname
\pgfplotsset{#1}%
}{%
% draws the legend:
\csname pgfplots@createlegend\endcsname
\endgroup
}%
% makes \addlegendimage available (typically only available within an
% axis environment):
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\begin{customlegend}[legend entries={$a$,$e^x$,C,$d$}]
\addlegendimage{red,fill=black!50!red,area legend}
\addlegendimage{red,fill=black!50!red,sharp plot}
\addlegendimage{red,fill=black!50!red,mark=*,sharp plot}
\addlegendimage{red,fill=black!50!red,ybar,ybar legend}
\end{customlegend}
\end{tikzpicture}
\end{document}
The different \addlegendimage
styles are a little bit ... inconsistent, but I wanted to experiment if they work. I guess that mesh legend
might produce problems, so stick to the simpler ones...

tikzpicture
\filldraw
andarc
paths. (No package could easily do what I wanted to out of the box: a pie chart within a ring chart; sort of like a pie with a crust.)