Constructing Lie algebra representations "the physics way" The following procedure is known to me from several physics lectures and I would like to understand more about its mathematical justification. I will quickly sketch the procedure:
Let $\mathfrak{g}$ be a Lie algebra with $\dim(\mathfrak{g})=n$ and $\rho:\mathfrak{g}
\rightarrow\mathrm{End}(V)$ a(n) (irreducible) representation. Let $\mathfrak{h}$ be a fixed cartan subalgebra of $\mathfrak{g}$ with $\dim(\mathfrak{h})=r$. Then we can find vectors
$e_\alpha\in\mathfrak{g}$ (since the elements of $\mathfrak{h}$ can be diagonalised simultaneously) such that
$$\mathrm{ad}(h_i)e_\alpha=\alpha_ie_\alpha$$
for a basis $\{h_i\}$ of $\mathfrak{h}$. Here, we call $\alpha=(\alpha_1,...,\alpha_r)\in\mathbb{R}^r\setminus\{0\}$ a root. The $\rho(e_\alpha)$ will be used later as $\textit{ladder operators}$.
Now about $\rho$: Since $\rho$ is a Lie algebra morphism, $\rho(\mathfrak{h})\subset\mathrm{End}(V)$ is still toral, so $\rho(h_1),...,\rho(h_r)$ can still be diagonalized simultaneously, giving a common eigenbasis of $V$. Let us denote this basis by $\{v_\mu\}$. The eigenvalues are $\mu_i$ are called weights and $\mu=(\mu_i)$ is called weight vector.
At this point physics text books say that "the rest" of the representation $\rho$ can be constructed by acting with $\rho(e_\alpha)$ von the basis $\{v_\mu\}$. I understand why
the $\rho(e_\alpha)$ lower or raise the eigenvalues giving new eigenvectors $v_{\mu+\alpha}\propto e_\alpha v_\mu$,etc, but it is not at all clear to me, why

*

*we even need new vectors $v_{\mu\pm\alpha}$ since we already have a basis of $V$
and


*why these weight vectors (and their sets of eigenvectors) are then enough to characterise the representation $\rho$.

The formalities of the above procedure are often swept under the carpet in physics lectures so I hope everything above makes sense and the questions are not too obvious.
$\textbf{Edit:}$ As pointed out by Torsten Schoeneberg in the comments, $\mathfrak{g}$ is assumed semisimple and we work over $\mathbb{C}$.
 A: Expanding my comments into a full answer.
The weight system of a Lie algebra representation tells us pretty much everything about the representation. I shall assume $\mathfrak{g}$ is complex semisimple for ease. The real versions can be obtained from the complex ones with a bit of work.
Let's fix a Cartan subalgebra $\mathfrak{h}\leq\mathfrak{g}$. The rest of the Lie algebra decomposes into a sum of root spaces $\mathfrak{g} = \mathfrak{h} \oplus \bigoplus_\alpha \mathfrak{g}^\alpha$. Note that $\mathfrak{g}$ has a representation on itself - the adjoint representation. This root space decomposition is exactly the weight space decomposition for the adjoint representation and we shall use that as our inspiration.
If we consider a representation $\rho:\mathfrak{g}\to \mathfrak{gl}(V)$ the first thing we should notice is that $\rho$ is linear so if we can work it out on a basis of $\mathfrak{g}$ we have the whole thing. Our choice of $\mathfrak{h}$ has given us a natural way to choose one. Pick an element from each root space (plus some collection in $\mathfrak{h}$). Now we just need to ascertain how each of these elements acts. Similarly to understand how each $\rho(X)$ acts we note that $\rho(X)$ is linear so we just need to understand it on a basis of $V$.
The key observation, as you have seen, is that $\rho(\mathfrak{h})$ consists of commuting semisimple (diagonalisable) elements and thus has a common eigenbasis. So $V$ is the direct sum of weight spaces $V_\lambda$ for $\lambda\in\mathfrak{h}^*$. In other words we know how $\mathfrak{h}$ acts on $V$: $$\rho(H)(v_\lambda) = \lambda(H)v_\lambda$$
So far so good but we need to now how the rest of $\mathfrak{g}$ acts.
Well it turns out that if $X_\alpha \in \mathfrak{g}^\alpha$ then $\rho(X_\alpha)(v_\lambda) $ lives in one of our already established weight spaces (it might be 0 but that is in every weight space trivially).
In fact it is in the weight space with weight $\lambda + \alpha$: $V_{\lambda + \alpha}$. Note that $\alpha,\lambda$ are both elements of $\mathfrak{h}^*$ so addition makes sense. Note also that $\lambda + \alpha$ is either another weight of our representation or $V_{\lambda + \alpha} = \{0\}$ so we are not making a new basis, just moving between our old basis elements. The term ladder operator here is to represent that we are stepping between root spaces in discrete steps and that $\mathfrak{g}^{-\alpha}$ moves in the opposite direction to $\mathfrak{g}^\alpha$.
Now we know how our chosen basis of $\mathfrak{g}$ acts on each $V_\lambda$ and thus on the whole of $V$. All of this information can be deduced from the weight system (up to rescaling some of the elements in our basis, etc.). Moreover if any other irreducible representation has the same weight system then it is isomorphic as a $\mathfrak{g}$ representation to our original one.
In fact we can do even better than this. An irreducible representation is characterised up to isomorphism by its highest weight by Cartan's Theorem of the Highest Weight. Here "highest" means that we pick some set of "simple roots" which defines a (partial) order on all weights of $\mathfrak{g}$. Note here I am thinking of all weights of all representations as a series of points in $\mathfrak{h}^*$. It turns out that these form a lattice, in fact, called the weight lattice. From a given highest weight we can deduce all the weights of the corresponding representation. Moreover every weight in the lattice can be the highest weight of a representation (depending on our choice of ordering, I should more properly say every dominant integral weight).
