If you add \showoutput to your code, you can see the vertical spaces added by TeX to construct the output page. So,
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\showoutput
\begin{align*}
top \\
\intertext{intertext}
bottom
\end{align*}
\end{document}
yields in your .log:
Completed box being shipped out [1]
\vbox(633.0+0.0)x407.0
.\hbox(0.0+0.0)x0.0
..\kern -72.26999
..\vbox(0.0+0.0)x345.0, glue set 72.26999fil
...\kern -72.26999
...\glue(\parskip) 0.0
...\hbox(0.0+0.0)x345.0, glue set 345.0fil
....\hbox(0.0+0.0)x0.0
....\hbox(0.0+0.0)x0.0
.....\hbox(0.0+0.0)x0.0
......\glue 0.0
......\hbox(0.0+794.96999)x0.0
.......\hbox(0.0+0.0)x0.0, shifted 794.96999
........\kern 0.0
........\glue 0.0 plus 1.0fil minus 1.0fil
......\glue 0.0 plus 1.0fil minus 1.0fil
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue 0.0 plus 1.0fil minus 1.0fil
.\glue 16.0
.\vbox(617.0+0.0)x345.0, shifted 62.0
..\vbox(12.0+0.0)x345.0, glue set 12.0fil
...\glue 0.0 plus 1.0fil
...\hbox(0.0+0.0)x345.0
....\pdfcolorstack 0 push {0 g 0 G}
....\hbox(0.0+0.0)x345.0
....\pdfcolorstack 0 pop
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 457.95108fil
...\write-{}
...\pdfcolorstack 0 push {0 g 0 G}
...\glue(\topskip) 10.0
...\hbox(0.0+0.0)x345.0, glue set 330.0fil
....\hbox(0.0+0.0)x15.0
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\penalty 10000
...\glue(\abovedisplayskip) 10.0 plus 2.0 minus 5.0
...\glue -3.0
...\glue 0.0
...\glue(\baselineskip) 6.60004
...\hbox(8.39996+3.60004)x187.49423, display
....\glue(\tabskip) 157.50575
....\hbox(8.39996+3.60004)x29.98848, glue set 16.49889fil
.....\glue 0.0 plus 1.0fil
.....\hbox(8.39996+3.60004)x0.0
......\vbox(8.39996+3.60004)x0.0
.......\kern 0.0
.......\hbox(8.39996+3.60004)x0.0
........\rule(8.39996+3.60004)x0.0
.....\hbox(6.15079+1.94444)x13.4896
......\mathon
......\hbox(6.15079+1.94444)x13.4896
.......\OML/cmm/m/it/10 t
.......\OML/cmm/m/it/10 o
.......\OML/cmm/m/it/10 p
......\mathoff
....\glue(\tabskip) 0.0
....\hbox(8.39996+3.60004)x0.0
.....\hbox(0.0+0.0)x0.0
......\mathon
......\hbox(0.0+0.0)x0.0
......\mathoff
.....\glue 0.0 plus 1.0fil
....\glue(\tabskip) 157.50575
....\hbox(8.39996+3.60004)x-157.50575
.....\kern -157.50575
....\glue(\tabskip) 0.0
...\penalty 10000
...\glue 0.0
...\penalty 0
...\glue 10.0 plus 2.0 minus 5.0
...\glue(\baselineskip) 4.72137
...\vbox(6.67859+0.0)x345.0
....\hbox(6.67859+0.0)x345.0, glue set 307.19437fil
.....\OT1/cmr/m/n/10 i
.....\OT1/cmr/m/n/10 n
.....\kern-0.27779
.....\OT1/cmr/m/n/10 t
.....\OT1/cmr/m/n/10 e
.....\OT1/cmr/m/n/10 r
.....\OT1/cmr/m/n/10 t
.....\OT1/cmr/m/n/10 e
.....\OT1/cmr/m/n/10 x
.....\OT1/cmr/m/n/10 t
.....\penalty 10000
.....\glue(\parfillskip) 0.0 plus 1.0fil
.....\glue(\rightskip) 0.0
...\penalty 10000
...\glue 10.0 plus 2.0 minus 5.0
...\glue(\baselineskip) 6.60004
...\hbox(8.39996+3.60004)x187.49423, display
....\glue(\tabskip) 157.50575
....\hbox(8.39996+3.60004)x29.98848
.....\glue 0.0 plus 1.0fil
.....\hbox(8.39996+3.60004)x0.0
......\vbox(8.39996+3.60004)x0.0
.......\kern 0.0
.......\hbox(8.39996+3.60004)x0.0
........\rule(8.39996+3.60004)x0.0
.....\hbox(6.94444+0.0)x29.98848
......\mathon
......\hbox(6.94444+0.0)x29.98848
.......\OML/cmm/m/it/10 b
.......\OML/cmm/m/it/10 o
.......\OML/cmm/m/it/10 t
.......\OML/cmm/m/it/10 t
.......\OML/cmm/m/it/10 o
.......\OML/cmm/m/it/10 m
......\mathoff
....\glue(\tabskip) 0.0
....\hbox(8.39996+3.60004)x0.0
.....\hbox(0.0+0.0)x0.0
......\mathon
......\hbox(0.0+0.0)x0.0
......\mathoff
.....\glue 0.0 plus 1.0fil
....\glue(\tabskip) 157.50575
....\hbox(8.39996+3.60004)x-157.50575
.....\kern -157.50575
....\glue(\tabskip) 0.0
...\penalty 10000
...\glue 0.0
...\penalty 0
...\glue(\belowdisplayskip) 10.0 plus 2.0 minus 5.0
...\glue -3.60004
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
..\glue(\baselineskip) 23.55556
..\hbox(6.44444+0.0)x345.0
...\pdfcolorstack 0 push {0 g 0 G}
...\hbox(6.44444+0.0)x345.0, glue set 170.0fil
....\glue 0.0 plus 1.0fil
....\OT1/cmr/m/n/10 1
....\glue 0.0 plus 1.0fil
...\pdfcolorstack 0 pop
.\kern 0.0
.\kern -633.0
.\hbox(0.0+0.0)x0.0
..\kern -72.26999
..\vbox(0.0+0.0)x345.0, glue set 72.26999fil
...\kern -72.26999
...\glue(\parskip) 0.0
...\hbox(0.0+0.0)x345.0, glue set 345.0fil
....\hbox(0.0+0.0)x0.0
....\hbox(0.0+0.0)x0.0
.....\hbox(0.0+0.0)x0.0
......\glue 0.0
......\hbox(0.0+794.96999)x0.0
.......\hbox(0.0+0.0)x0.0, shifted 794.96999
........\kern 0.0
........\glue 0.0 plus 1.0fil minus 1.0fil
......\glue 0.0 plus 1.0fil minus 1.0fil
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue 0.0 plus 1.0fil minus 1.0fil
.\kern 633.0
It might not be that easy to see, but between top and intertext there is
...\glue 10.0 plus 2.0 minus 5.0
...\glue(\baselineskip) 4.72137
and between intertext and bottom there is
...\glue 10.0 plus 2.0 minus 5.0
...\glue(\baselineskip) 6.60004
These are the vertical skips inserted between the constructions. 10.0 plus 2.0 minus 5.0 both represent \abovedisplayskip and \belowdisplayskip which can stretch depending where the align fits within the regular text block construction. The definition of \intertext inside amsmath.dtx provides mention of these skips.
Soooooo... you can get rid of them using

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
top \\[\dimexpr-\abovedisplayskip-\baselineskip]
\intertext{intertext} \\[\dimexpr-\belowdisplayskip-\baselineskip]
bottom
\end{align*}
\end{document}
However, if the intent is just to make a "comment on the left side of an equation", you could probably also do:

\documentclass{article}
\usepackage{amsmath}
\usepackage{zref-savepos,eso-pic}
\newcounter{lc}
\makeatletter
\newcommand{\leftcomment}[1]{%
\stepcounter{lc}
\ifmeasuring@\else
\zsaveposx{comment-\thelc}% Current location x
\fi
\makebox[0pt][r]{%
\makebox[\dimexpr\zposx{comment-\thelc}sp-\zposx{textblock}sp][l]{#1}%
}
}
\makeatother
\AddToShipoutPictureBG*{\AtTextLowerLeft{\zsaveposx{textblock}}}% Left margin of text block
\begin{document}
\begin{align*}
top \\[\dimexpr-\abovedisplayskip-\baselineskip]
\intertext{intertext} \\[\dimexpr-\belowdisplayskip-\baselineskip]
bottom
\end{align*}
\begin{align*}
f(x) &= ax^2 \leftcomment{intertext1} \\
\leftcomment{intertext2} g(x) &= bx \tag{eq2} \\
h(x) &= c
\end{align*}
\end{document}
The idea being eso-pic is to capture the location of the text block left margin, while zref's savepos module allows us to capture the coordinate of a label using TeX's \label-\ref system. Since we use the latter, you'll have to compile twice with every change of the labels.
\intertextand\shortintertext– Werner Jan 06 '19 at 07:05\intertexthere is simply user error, using negative spacing will in general cause it to over-print the equation. It is not that\intertextadds vertical space, it is that it adds a line of text after the equation. If you want to add text within the equation then you should use\textor similar commands. – David Carlisle Jan 06 '19 at 10:31