As far as I know, there isn't a way to prove this theorem without using properties of compactness. In fact, compactness of domain is necessary for the statement to be true.
So, let's just develop those relevant properties here, in $\mathbb{R}$ instead of in metric spaces. Hopefully working through these definitions and exercises will help.
Definition: A limit point of a set $S \subset \mathbb{R}$ is a point $p$ such that, for every $\epsilon>0$, there is $x\in S$ with $|p-x|<\epsilon$.
Definition: A subset $S\subset \mathbb{R}$ is open if, for all $x\in S$, there is some $\epsilon > 0$ such that $(x-\epsilon, x+\epsilon) \subset S$.
Definition: A subset $S\subset \mathbb{R}$ is closed if it contains all of its limit points.
Exercise 1: Prove that a set $A\subset \mathbb{R}$ is open if and only if $A^c$, its complement, is closed.
Exercise 2:
a) Let $\{A_n\}$ be a sequence of open sets. Prove $\bigcup_{n=1}^{\infty} A_n$ is itself open.
b) Let $\{A_n\}$ be a sequence of closed sets. Prove $\bigcap_{n=1}^{\infty} A_n$ is itself closed.
Exercise 3: Prove that $f:\mathbb{R} \to \mathbb{R}$ is continuous if and only if $f^{-1} (U)$ is open for every open subset $U \subset\mathbb{R}$. What does this tell you about $f^{-1} (V)$ for closed sets $V\subset\mathbb{R}$?
Definition: An open covering of a set $S\subset \mathbb{R}$ is a collection of open sets $\{U_\alpha\}$ (countable or uncountable), such that $S\subset \bigcup U_\alpha$. A finite subcovering of $\{U_\alpha\}$ is some subcollection $\{U_1, \cdots, U_n\}$ of $\{U_\alpha\}$ such that $S \subset \bigcup_{i=1}^{n} U_i$.
Definition: A set $S \subset\mathbb{R}$ is compact if every open covering of $S$ contains a finite subcovering of $S$.
Exercise 4: Let $S\subset \mathbb{R}$ be compact. Prove that every infinite subset of $S$ has a limit point.
Theorem (Heine-Borel): A set $S\subset\mathbb{R}$ is compact if and only if it is closed and bounded. This is hard to prove, but think about why it should be true.
Proof of Dini's Theorem:
Fix $\epsilon> 0$. Let $g_n = f_n - f$ for all $n$. Since $\{f_n\}$ is decreasing, we see $g_{n+1} \le g_n$ for all $n$, and also $g_n \ge 0$ for all $x\in [a,b]$. In addition $g_n (x) \to 0$ as $n\to\infty$ for all $x\in [a,b]$ (by pointwise convergence of the $\{f_n\}$).
Now, consider the sets ${g_n}^{-1} ([\epsilon, \infty))$. First, check that $[\epsilon, \infty)$ is a closed set. By Exercise 3, we then have that ${g_n}^{-1} ([\epsilon, \infty))$ is also closed, for all $n$. Thus, ${g_n}^{-1} ([\epsilon, \infty))$ is compact for every $n$ (why?). Finally, note that $${g_{n+1}}^{-1}([\epsilon, \infty)) \subset {g_n}^{-1}([\epsilon,\infty))$$
The statement that the $\{f_n\}$ converge uniformly to $f$ is equivalent to the statement that ${g_n}^{-1} ([\epsilon, \infty)) = \emptyset$ for some $n$ (why?). So suppose this is not true. Then for each $n$, we can pick $x_n \in {g_n}^{-1} ([\epsilon, \infty))$. By Exercise 4, the sequence $\{x_i\}$ has a convergent subsequence $\{x_{i_k}\}$. Say that $x_{i_k} \to x$ as $k\to\infty$. We must have $x\in {g_n}^{-1} ([\epsilon, \infty))$ for all $n$ (why? Use Exercise 2). Thus, $g_n (x) \ge \epsilon$ for all $n$. This contradicts the fact that $g_n (x) \to 0$ pointwise.
Conclusion: The $\{f_n\}$ converge uniformly to $f$.