Wie Johannes bereits richtig bemerkt hat muss das `\label` nach der `\caption` stehen (gilt immer!). Zusätzlich würde ich eine eigene Box definieren, statt eine existierende Box in ein Makro zu packen, insbesondere da so Sachen wie der `\vspace` von `tcolorbox` erledigt werden können.
\documentclass[12pt,parskip=full]{scrartcl}
\usepackage[utf8]{inputenx}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{tcolorbox}
\newtcolorbox{meinebox}[2]{
\newtcolorbox{meinebox}[3][]{
width=\textwidth,boxrule=.25mm,
colframe=black,colback=white,
before skip=.15cm,after skip=.15cm,
fonttitle={\parskip=.5cm},% <-- Keine gute Idee
after={\captionof{figure}{#1}\label{#2}}
after={\captionof{figure}{#2}\label{#3}},
#1
}
\begin{document}
\section{Überschrift}
\subsection{Überschrift}
\begin{meinebox}{Dies ist die Beschreibung zur Abbildung.}{fig:Blindtext}
\blindtext
\end{meinebox}
\blindtext
Siehe Abbildung~\ref{fig:Blindtext}
\end{document}
> ![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/test_13.png