Schleifendurchläufe finden mit einer lokalen Gruppe statt, so dass Definitionen und andere Statusänderungen im jeweiligen Schleifendurchlauf verborgen bleiben. Statt die Änderung mit \xdef global zu machen, empfehle ich in Fällen wie deinem jedoch, einfach den Wert direkt auszurechnen und zu verwenden:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \c in {1,2,...,5} {
\draw (0,\c) -- (0,\c) node[left=4pt]
{$\pgfmathparse{0.3*\c}\scriptstyle \pgfmathprintnumber{\pgfmathresult}$};
}
\end{tikzpicture}
\end{document}
Und bitte immer ein vollständiges Minimalbeispiel an Stelle von Code-Schnipseln angeben. Man kann daran fast immer einiges ablesen und es beschleunigt die Bearbeitung. Außerdem kannst du so selbst besser testen, dass es außer dem erwähnten Problem keine Fehler enthält.
Übrigens sollte man statt \pgfmathparse{\ergebnis+0.3}\edef\ergebnis{\pgfmathresult} besser direkt \pgfmathsetmacro{\ergebnis}{\ergebnis+0.3} verwenden. Ein korrektes Vorgehen mit Rettung des Werts über einen Schleifendurchlauf hinaus wäre IMHO damit:
\documentclass{article}
\usepackage{tikz}
\newcommand*{\ergebnis}{}% Für die spätere Verwendung "reservieren".
\begin{document}
\begin{tikzpicture}
\renewcommand*{\ergebnis}{0}%
\foreach \c in {1,2,...,5} {
\draw (0,\c) -- (0,\c) node[left=4pt]
{\pgfmathsetmacro{\ergebnis}{\ergebnis+0.3}
\global\let\ergebnis\ergebnis
\pgfmathparse{0.3*\c}\footnotesize \pgfmathprintnumber{\ergebnis}};
}
\end{tikzpicture}
\end{document}