Here is a solution that should get you started. Place your \newcommands along with the description in MyPreamble.sty. The format of this file is
\newcommand*{\CommandName}{... command text ...}%
\begin{CommandDescription}
... the description of what this macro does goes here ...
\end{CommandDescription}
In the preamble you \include this file via \InputOnlyNewcommands{MyPreamble.sty}, which ignores the description of the macros, and only defines the \newcommands. In the main body you can use these macros as you want. At the end of the document you can have an appendix with these commands and their description via \InputIgnoringNewcommands{MyPreamble.sty}.
In the example below I define three commands along with a description of what they do.

Notes:
- Not sure how to eliminate the quote at the beginning of the command name in the appendix.
- The
filecontents package was only used to package this example into a fully compilable example. It is not needed in your real example.
- This only works with
\newcommand. That is you can not use \def, \renewcommand, \providecommand, or any of the equivalent macros from the xparse package.
Code:
\documentclass{article}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage{enumerate}
\usepackage{environ}
\usepackage{filecontents}
\begin{filecontents}{MyPreamble.sty}
\newcommand{\Bold}[2][black]{\textbf{\textcolor{#1}{#2}}}%
\begin{CommandDescription}
This macro makes the text parameter bold.
\end{CommandDescription}
\newcommand*{\BoldBlue}[1]{\Bold[blue]{#1}}%
\begin{CommandDescription}
This macros makes the text parameter bold, and also in blue.
\end{CommandDescription}
\newcommand*{\BoldRedItalics}[1]{\textit{\Bold[red]{#1}}}%
\begin{CommandDescription}
This macros makes the text parameter bold, italicized, and also in red.
\end{CommandDescription}
\end{filecontents*}
\NewEnviron{CommandDescription}[1]{}{}%
\newcommand{\InputOnlyNewcommands}[1]{%
\RenewEnviron{CommandDescription}{}{}%
\input{#1}%
}%
\newcommand{\InputIgnoringNewcommands}[1]{%
\RenewEnviron{CommandDescription}{%
\BODY\par
}{%
}%
\RenewDocumentCommand{\newcommand}{%
s% #1 = optional star
m% #2 = macro name
O{0}% #3 = number of parameters (optional, defaults to 1)
o% #4 = default value of optional parameter
m% #5 = code that was to be executed
}{%
\medskip\par\noindent%
\Bold{\string##2:}
}%
\input{#1}%
}%
\InputOnlyNewcommands{MyPreamble.sty}
\begin{document}
\section{Body}
Make \Bold{this bold.}
And in color: \BoldBlue{blue.}
And in color with italics: \BoldRedItalics{red.}
\section{Appendix}
\InputIgnoringNewcommands{MyPreamble.sty}
\end{document}