Für die Änderung der Position kannst du die Option `baseline` für das `tikzpicture` nutzen. Diese gibt an, welcher Punkt des Bildes auf der Grundlinie der Umgebung eingefügt wird. Weitere Infos dazu findest Du im [pgfmanual][1].
Zum Zentrieren der marginnote gegenüber der Grundlinie der aktuellen Zeile lässt sich die Node `current bounding box` mit dem Anker `center` verwenden:
\documentclass{scrartcl}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[ngerman]{babel}
\usepackage[marginparwidth=3.5cm,right=4.5cm]{geometry}
\usepackage{tikz}
\colorlet{maincolor}{red}
\newcommand{\marginnote}[1]{%
\marginpar{%
\begin{tikzpicture}[
baseline=(current bounding box.center),
]
\node[draw=maincolor, fill=maincolor!10,
rounded corners,inner sep=5pt,thick,
text width=\linewidth-10pt-\pgflinewidth,
] {\strut#1\strut};
\end{tikzpicture}%
}%
}
\usepackage{blindtext}% Fülltext
\usepackage{showframe}% Seitenaufteilung
\begin{document}
\blindtext In dieser Zeile folgt dann noch am Rand eine Randnotiz mit wichtigem Inhalt.
\marginnote{Dies ist eine ganz wichtige Randno\-tiz.}
\hrulefill
\end{document}
![alt text][2]
Wenn man aber bei einer ungeraden Anzahl Zeilen die mittelste auf Höhe der eigentlichen Textzeile haben möchte, dann ist es besser eine Hilfsnode mit dem Inhalt [`\strut`][3] in der Mitte zu platzieren und deren `base` Anker zum Einfügen des Bildes auf der Grundlinie zu verwenden.
\newcommand{\marginnote}[1]{%
\marginpar{%
\begin{tikzpicture}[
baseline=(mp.base),
every node/.style={rounded corners,inner sep=5pt,thick}
]
\node(mp){\strut};
\node[draw=maincolor, fill=maincolor!10,
text width=\linewidth-10pt-\pgflinewidth,
] {\strut#1\strut};
\end{tikzpicture}%
}%
}
![alt text][4]
Ändert man jetzt den Anker der eigentlichen Node und der Hilfsnode auf `north`, dann wird die erste Zeile der Randnotiz auf gleicher Höhe wie die eigentliche Textzeile ausgegeben:
\newcommand{\marginnote}[1]{%
\marginpar{%
\begin{tikzpicture}[
baseline=(mp.base),
every node/.style={rounded corners,inner sep=5pt,thick,
anchor=north
}
]
\node(mp){\strut};
\node[draw=maincolor, fill=maincolor!10,
text width=\linewidth-10pt-\pgflinewidth,
] {\strut#1\strut};
\end{tikzpicture}%
}%
}
![alt text][5]
Die maximal mögliche Breite des Randnotizentextes erhält man übrigens, wenn man von `\marginparwidth` oder [`\linewidth`][6] [`\\linewidth`][6] das Doppelte des `inner sep` der Node (bei Dir also 10pt) und `\pgflinewidth` abzieht.
[1]: http://www.ctan.org/pkg/pgf
[2]: http://texwelt.de/wissen/upfiles/marginpar3.PNG
[3]: http://texwelt.de/wissen/fragen/1315/was-macht-der-befehl-strut/1316
[4]: http://texwelt.de/wissen/upfiles/marginpar4.PNG
[5]: http://texwelt.de/wissen/upfiles/marginpar2.PNG
[6]: http://texwelt.de/wissen/fragen/2520/worin-besteht-der-unterschied-zwischen-textwidth-und-linewidth/2526