In your latest case you will notice that the point at the top does correspond to a horizontal tangent ((just taking a look at it you see that the slope of the curve there is zero), but your other points are not vertical tangents since the slopes of the curve there is not vertical, it has a slope in both cases. The problem is that you substituted into the x values and solved for y rather than substituted for the y values and solved for x in each case,
Here are those two cases, corrected:
NSolve[(84 x + 6 x^2 + 28 x^3 + 3 x^4 - 288 y - 12 y^2 + 4 y^3 == 5) /. y -> -4, x]
and
NSolve[(84 x + 6 x^2 + 28 x^3 + 3 x^4 - 288 y - 12 y^2 + 4 y^3 == 5) /. y -> 6, x]
These give the following points (confirm for yourself):
{{-9.14477, -4}, {-2.97489, -4}}
and
{-9.86928, 6}
so your ListPlot is
ListPlot[{{-9.144774626644757`, -4}, {-2.974889393649998`, -4}, \
{-9.869278763054162`, 6}}, PlotStyle -> {Black, PointSize[Large]}]