Here is the improved version (common scope).
\documentclass{minimal}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{calc}
% create symbols
\newcommand{\reddot}{\tikz{\fill[red] (0,0) circle (4pt);}}
\newcommand{\greentriangle}{\tikz{\fill[green] (0,0) -- (4.62pt,8pt) -- (9.23pt,0) -- cycle;}}
\newcommand{\bigx}{\tikz{\draw[black,thick] (0,0) -- (7pt,7pt) (0,7pt) -- (7pt,0);}}
\newlength{\csize}
\newlength{\clabel}
\newlength{\cwidth}
\newcommand{\cell}[1]% centers text in cell
{node[above right,minimum width=\csize, minimum height=\csize]{#1}}
\begin{document}
test \reddot \greentriangle \bigx \checkmark $\bigstar$
\setlength{\csize}{1.5\baselineskip}% cell size (note: \baselineskip depends on current font)
\addtolength{\csize}{.6666em}
\settowidth{\clabel}{longest label}% label width
\addtolength{\clabel}{.6666em}
\setlength{\cwidth}{2\csize}% total width
\addtolength{\cwidth}{\clabel}
\begin{tikzpicture}
\path (-\clabel,-2\csize) node[above right,fill=yellow,minimum width=\cwidth, minimum height=\csize]{};
\draw% horizontal lines
(-\clabel,0) -- (2\csize,0)
(-\clabel,-\csize) -- (2\csize,-\csize)
(-\clabel,-2\csize) -- (2\csize,-2\csize);
\path% labels
(-\clabel,-2\csize) node[above right]{left}
(0,-2\csize) node[above left]{right}
(-0.5\clabel,-\csize) node[above]{center};
\draw% vertical lines
(0,0) -- (0,-2\csize)
(\csize,0) -- (\csize,-2\csize)
(2\csize,0) -- (2\csize,-2\csize);
\path% fill cells
(0,-\csize) \cell{1}
(\csize,-\csize) \cell{2}
(0,-2\csize) \cell{3}
(\csize,-2\csize) \cell{4};
\draw% diagonal lines
(0,0) -- ++(45:\clabel)
(\csize,0) -- ++(45:\clabel)
(2\csize,0) -- ++(45:\clabel);
\path% diagonal labels
(\csize,0) node[above right,rotate=45]{first}
(2\csize,0) node[above right,rotate=45]{second};
\end{tikzpicture}
\end{document}
