You miss setting also \belowdisplayskip. However, as it's clear from the image, a spurious space will be inserted. You're better served with a new environment:
\documentclass{article}
\usepackage{amsmath}
\newenvironment{nospaceflalign*}
{\setlength{\abovedisplayskip}{0pt}\setlength{\belowdisplayskip}{0pt}%
\csname flalign*\endcsname}
{\csname endflalign*\endcsname\ignorespacesafterend}
\begin{document}
Some irrelevant text above
\begin{nospaceflalign*}
x\mathbf{e}_1 + y\mathbf{e}_2 &= x\mathbf{f}_2 + y(-\mathbf{f}_1 - \mathbf{f}_2) &\\
&= -y\mathbf{f}_1 + (x-y)\mathbf{f}_2 &\\
&= w\mathbf{f}_1 + z\mathbf{f}_2 &
\end{nospaceflalign*}
where $w = -y$ and $z = x - y$.
\end{document}
Using \csname flalign*\endcsname in this case is necessary because the environment has a * in its name and the \begin{flalign*} form can't be used for technical reasons related to how amsmath processes alignment environments.
With \ignorespacesafterend we solve the spurious space issue. If later you want to modify the rendering, it will be easier to act on the definition, rather than on the document.

\setlength{\belowdisplayskip}{0pt}right after\setlength{\abovedisplayskip}{0pt}seems to do it for me. But perhaps there is something else going on, so keep in mind that while code snippets are useful in explanations, it is always best to compose a fully compilable MWE that illustrates the problem including the\documentclassand the appropriate packages so that those trying to help don't have to recreate it. – Peter Grill Mar 5 at 18:50