Why do we need epsilon-transitions in Thompson's construction? So as learned every DFA is an NFA. I feel like I understand DFA much better than NFA, so I try to convert my regular expressions to DFA, but I want to understand both sides.

For example a|b (a Union b):




However, are we losing anything if we eliminate the epsilon from these expressions, every DFA is an NFA right so what are we losing if we don't include it?
What you're looking at there is what's known as Thompson's construction. The idea is that any node in the regular expression parse tree corresponds to an NFA with a single entry and exit point. To see why the epsilon transitions are useful, try applying the construction to, say, $(a \cup b^*)c$.

Thompson's construction is particularly easy to understand and implement but it is also, as you rightly say, a bit wasteful. It is possible to construct Thompson's automaton with the epsilon transitions removed using Glushkov's method. You may also be interested in Xing's construction.