The Big O Wikipedia page says: $$ \lvert f(x) \rvert \leq Mg(x) \textrm{ for all } x \ge x_0 $$
In Big O, and especially in general, what is the difference between x and $x_0$? In my naive, computer-programmer-oriented understanding, $x_0$ is the first element--although that must be wrong because sets are, by definition, unordered. Is this a naming convention of some kind? To me, it seems that $x_0$ is just "some $x$" where, in Big O, an important relationship happens.
You missed some important parts from the definition, probably because they were not a formula. The sentence starts:
Note that the definition needs some numbers $M$ and $x_0$ to exist. So, in some sense, if you want to prove that $f(x) = O(g(x))$ is actually true, $M$ and $x_0$ are constants that you need to provide. Then you need to show that for all $x$, under the condition that $x \ge x_0$, the given inequality holds. So the main difference between $x_0$ and $x$ is is you need only one $x_0$, but then you need to check $|f(x)| \le M|g(x)|$ for all $x$ with $x \ge x_0$!
The naming convention of $x_0$ is just a convention, it could have been named $y$ or $z_3$ or $N$. But just as any technical language, mathematics has adopted a canon of commonly used symbols for commonly used purposes: $x,y,z$ are usually unknowns, $a,b,c$ usually parameters. If there is a number that is closely related to an unknown, then it may be named as the unknown with an index. In this case, $x_0$ is a lower boundary for the permissable range of the unknown $x$.