The proof (and the theorem itself) looks like an "introduction" for the Pumping Lemma.
The theorem is indeed true but the proof has a minor flaw, since you want to assume that you have at least one string $w$ of length $n$ (or more), basically your number of states. Let $w = w_1\dots w_n$ with $w_i \in \Sigma$ for all $i$. In that case your automaton $M$ is going to process through the string in a sequence (since the automaton changes its state, even if staying in the same state, after reading a symbol): $$q_0 \overset{w_1}{\to} q_1 \overset{w_2}{\to} q_2 \to \cdots \overset{w_n}{\to} q_n$$
These are $n+1$ states and your automaton $M$ only has $n$ states, therefore two numbers of the sequence $0 \leq i,j \leq n$ exist with $i \ne j$ (distinct numbers) and $q_i = q_j$ due to the lack of states. It follows that the transition between $q_i$ and $q_j$ is a loop and therefore this part of the string $w$ - called $y$ in the proof - can be pumped, that means if $M$ accepts $w=xyz$ then it also accepts $xy^nz$ with $n \in \mathbb{N}_0$ and therefore an infinite number of strings.
In the provided proof, you would only need $n$ states with a string of length $n-1$, which wouldn't cause a "problem" to the number of states that means a loop as you already pointed out.
To your second question, you are right. Hence you can find a string of length $2$ that is going to be accepted by your automaton (two loops in your accepting state). However, the given automaton is just a basic nondeterministic finite automaton so it might not be capable of $\varepsilon$-moves depending on your definition.
You could construct a simple NFA $M = (\{q_0,\dots,q_{n-1}\}, \{a\}, \delta, q_0, \{q_{n-1}\})$ with $\delta(q_i,a) = q_{i+1}$ for $i=1,\dots,n-1$ and $\delta(q_{n-1},a)=q_{n-1}$, so accepting the language of all strings with length at least $n$. This NFA suffices the condition.
However you can construct an NFA that has the same states and transitions as the one above but accepts if and only if the length of the string is $2$ (accepting state $q_2$). So the theorem is only true if there exists a string of at least length $n$ and gets accepted by the automaton with $n$ states, otherwise you wouldn't have a loop and therefore cannot "pump" a specific part of the string.