I think the best solution is still to use \marginpar (or if you prefer \marginnote from the marginnote package. Just make the \marginparwidth bigger, and textwidth correspondingly smaller.
And for the headings over the full width you can define an environment that typesets them in a wider environment.
Here is an example, using both \marginpar and \marginnote. This solution assumes a one-sided document layout, i.e. the margin notes are always to the right.
\documentclass{article}
\usepackage{calc}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{marginnote}
\addtolength{\marginparwidth}{3cm}
\addtolength{\textwidth}{-3cm}
\newlength{\fullwidth}
\setlength{\fullwidth}{\textwidth+\marginparwidth+\marginparsep}
% Two different possibilities to define a wide environment.
\newenvironment{widetext}{%
\par\hsize=\fullwidth \linewidth=\hsize \textwidth=\hsize \columnwidth=\hsize}%
{\par}
\newenvironment{wide}
{\begin{list}{}{\setlength{\leftmargin}{0pt}\setlength{\rightmargin}{-\marginparwidth-\marginparsep}}\item}
{\end{list}}
\begin{document}
\section{Introduction}
\label{sec:introduction}
Some intro text
\marginnote{\includegraphics[width=\linewidth]{example-image}}
\lipsum[1]
\marginpar{Nam dui ligula, fringilla a, euis- mod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tel- lus. Donec aliquet, tortor sed ac- cumsan bibendum, erat ligula ali- quet magna, vitae ornare odio me- tus a mi. Morbi ac orci et nisl hendrerit mollis.}
\lipsum[3]
\begin{widetext}
\bfseries \Large A heading spanning both ``columns'' using the \texttt{widetext} environment. This is some more filler text.
\end{widetext}
\lipsum[4]\marginnote{Some more text in the margin positioned a bit upwards.}[-5\baselineskip]
\newpage
\begin{wide}
\bfseries \Large Another heading spanning both ``columns''. Now using the \texttt{wide} environment. This is some more text.
\end{wide}
\lipsum
\end{document}

If you want breakable text in your right column you could use the parallel package. Here is a suggestion to make that a bit easier:
\usepackage{parallel}
\newlength{\lefttextwidth}
\setlength{\lefttextwidth}{\textwidth}
\newcommand{\twocols}[2]
{\begin{widetext}
\begin{Parallel}{\lefttextwidth}{\marginparwidth}%
\ParallelLText{#1}
\ParallelRText{#2}
\end{Parallel}
\end{widetext}}
and then in the document:
\twocols
{\lipsum[1]}
{Some side remark.}
\twocols
{\textbf{Parallel Left}\lipsum[2]\lipsum[9]}
{\textbf{Parallel Right}\lipsum[3]}
\twocols
{\textbf{Parallel Left}\lipsum[4]}
{\textbf{Parallel Right}\lipsum[5]}
Sometimes the right column parts may bump into each other when mixing parallel and margin notes. In the case inserting \twocols{}{} may help.
If you want to have breakable text in the right column you could look into the
parallelpackage. But it is more work to structure your document, because you have to give each paragraph inside a command.Actually it is possible to use it together with my solution if you put a
– Pieter van Oostrum Nov 21 '16 at 14:04Parallelenvironment in awidetextenvironment.parallelfor those cases where you want page breaks in your second column. – Pieter van Oostrum Nov 21 '16 at 14:21\sidebarmacro for the memoir style which seems like it could be useful to me. – Dan Robertson Nov 21 '16 at 14:34\sidebardoesn't keep its text close to the callout. I guess there really isn't a 100% ideal solution. It would be nice if\marginpars could be made breakable, just like footnotes. – Pieter van Oostrum Nov 21 '16 at 14:53marginparsolution is probably closest to what I want, only usingmarginfixinstead so that\blockmarginand\unblockmarginmay be used for wider sections. – Dan Robertson Nov 21 '16 at 14:54