How can a "proper" function have a vertical slope? Plotting the function $f(x)=x^{1/3}$ defined for any real number $x$ gives us:


Since $f$ is a function, for any given $x$ value it maps to a single y value (and not more than one $y$ value, because that would mean it's not a function as it fails the vertical line test).
This function also has a vertical tangent at $x=0$. 

My question is: how can we have a function that also has a vertical tangent? To get a vertical tangent we need 2 vertical points, which means that we are not working with a "proper" function as it has multiple y values mapping to a single $x$. How is it possible for a "proper" function to have a vertical tangent?

As I understand, in the graph I pasted we cannot take the derivative of x=0 because the slope is vertical, hence we cannot see the instantaneous rate of change of x to y as the y value is not a value (or many values, which ever way you want to look at it). How is it possible to have a perfectly vertical slope on a function? In this case I can imagine a very steep curve at 0.... but vertical?!? I can't wrap my mind around it. How can we get a vertical slope on a non vertical function?
The tangent line is simply an ideal picture of what you would expect to see if you zoom in around the point.

$\hspace{8em}$ 

That being said, the vertical tangent line to the graph $y = \sqrt[3]{x}$ at $(0,0)$ says nothing more than that the graph would look steeper ans steeper as we zoom in further around $(0, 0)$.

We can also learn several things from this geometric intuition.


The line is never required to pass through two distinct points, as the idea of tangent line itself does not impose such extraneous condition.

For instance, tangent lines pass through a single point even in many classical examples such as conic sections. On the other extreme, a tangent line can pass through infinitely many points of the original curve as well.
Tangent line is purely a geometric notion, hence it should not depend on the coordinates system.

On the contrary, identifying the curve as the graph of some function $f$ and differentiating it does depend on the coordinates system. In particular, it is not essential for $f$ to be differentiable in order to discuss a tangent line to the graph $y = f(x)$, although it is a sufficient condition.

OP's example serves a perfect showcase of this. Differentiating the function $f(x) = \sqrt[3]{x}$ fails to detect the tangent line at $(0,0)$, since it is not differentiable at this point. On the other hand, it perfectly makes sense to discuss vertical tangent line of the curve

$$ \mathcal{C} = \{(x, \sqrt[3]{x}) :x \in \mathbb{R} \} = \{(y^3, y) : y \in \mathbb{R} \}, $$

and indeed the line $x = 0$ is the tangent line to $\mathcal{C}$ at $(0, 0)$.
As you observed, $\frac{dy}{dx}$ is not defined at $(x,y) = (0,0).$
And there is no straight segment anywhere on the graph where the slope could be exactly measured by taking any two distinct points on that segment.

But those are not the only ways to define the slope of a curve.

One approach is to take a secant line between $(0,0)$ and a nearby point, and find the limit of the slope of that line as the distance goes to zero.
You can also take the angle between the $x$ axis and the secant line between two points on either side of $(0,0),$ taking a limit as the distance between those points goes to zero.
If the limit is defined (it is not for every curve) then it gives you the tangent line.

Another approach is to parameterize the curve: $x = u(t)$ and $y = v(t)$ where we let $t$ range over some (possibly infinite) interval of $\mathbb R.$
Consider the vector $\left(\frac{d}{dt}u(t), \frac{d}{dt}v(t)\right).$
As long as that vector is not $(0,0)$ we can consider it to be in the same direction as the slope of the curve.
Now let $x = u(t) = t^3,$ $y = v(t) = t.$
Then the vector along the curve at $(x,y) = (0,0)$ is $(0,1),$ which points straight up, so the tangent line is vertical.