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