In the definition
\begin{tabular}{c|m{3em}|m{3em}|m{3em}|}
each column specification effectively consists of both a basic type (c or m) and a vertical bar along the right-hand edge.
To avoid getting a vertical bar at the right-hand edge, it's necessary to use a different column specification locally. In the following example, I use \multicolumn{1}{l}{...} -- actually, abbreviated to \mc{...} -- to provide such an alternate column specification in each of the four cells of the first row.

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{array}
\setlength\extrarowheight{2pt} % for a less-cramped "look"
\newcommand\mc[1]{\multicolumn{1}{l}{#1}} % Note: no vertical bars
\begin{document}
\begin{tabular}{c|p{3em}|p{3em}|p{3em}|}
\mc{} & \mc{$1$} & \mc{$2$} & \mc{$3$} \\
\cline{2-4}
$3$ & $7500^2$ & $25000^2$ & $0$ \\
\cline{2-4}
$2$ & $5000^1$ & $0$ & \cellcolor{gray!10}\\
\cline{2-4}
$1$ & $0$ &\cellcolor{gray!10} &\cellcolor{gray!10}\\
\cline{2-4}
\end{tabular}
\end{document}
&\multicolumn{1}{l}{1}&\multicolumn{1}{l}{2}&\multicolumn{1}{l}{3}as the first line. – Johannes_B Apr 16 '18 at 04:11