Here are two ways. In the first one, I have placed 4 minipages insode of a figure environment. In the second example, I have placed the images and their caption inside of a tabularx and used the commands from the cellspace package to add a uniform white space around the images.

\documentclass{article}
\usepackage{graphicx}
%%%% Only used for the second example %%%%
\usepackage{tabularx}
\usepackage{cellspace}
\addparagraphcolumntypes{X}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\addparagraphcolumntypes{Y}
\setlength\cellspacetoplimit{\tabcolsep}
\setlength\cellspacebottomlimit{\cellspacetoplimit}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{figure}
\begin{minipage}{0.475\textwidth}
\includegraphics[width=\linewidth]{example-image}
\end{minipage}\hfill
\begin{minipage}{0.475\textwidth}
\includegraphics[width=\linewidth]{example-image}
\end{minipage}
\bigskip
\begin{minipage}{0.475\textwidth}
\includegraphics[width=\linewidth]{example-image}
\end{minipage}\hfill
\begin{minipage}{0.475\textwidth}
\caption{my caption text goes here my caption text goes here}
\label{label}
\end{minipage}
\end{figure}
\begin{figure}
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{tabularx}{\textwidth}{@{}S{Y}S{Y}@{}}
\includegraphics[width=\linewidth]{example-image}
& \includegraphics[width=\linewidth]{example-image} \\
\includegraphics[width=\linewidth]{example-image}
& \caption{my caption text goes here my caption text goes here}\label{label} \\
\end{tabularx}
\end{figure}
\end{document}