The following definition comes from chapter 7 section 9 of Apostol's Calculus.
Assume that $g(x) \neq 0$ for all $x \neq a$ in some interval containing $a$. The notation $$f(x) = o(g(x) ~~~\mbox{ as } x \to a$$ means that $$\lim_{x \to a} \frac{f(x)}{g(x)} = 0$$
It seems that the equal sign used in "$f(x) = o(g(x) ~~~\mbox{ as } x \to a$ is not being used in its usual sense, whereas in $\lim_{x \to a} \frac{f(x)}{g(x)} = 0$ it is. Here is theorem 7.8 in Apostol's book:
As $x \to a$, we have the following: $$\mbox{(a)}~~~~~ o(g(x)) \pm o(g(x)) = o(g(x))$$ $$\mbox{(b)}~~~~~ o(cg(x)) = o(g(x))$$ $$\mbox{(c)}~~~~~ f(x) o(g(x)) = o(f(x) g(x))$$ $$\mbox{(d)}~~~~~ o(o(g(x)) = o(g(x))$$ $$\mbox{(e)}~~~~~ \frac{1}{1+g(x)} = 1 - g(x) + o(g(x)) ~~~\mbox{ if } g(x) \to 0 \mbox{ as } x \to a$$
Apostol gives a proof of (a) and (e). Since he omitted the proofs, I thought it would be a good idea to prove them. Here are two 'proofs' of part (c), each of which has its own issue, as you will see. First, $f(x) o(g(x)) = o(f(x) g(x))$ as $x \to a$ iff $\lim_{x \to a} \frac{f(x) o(g(x))}{f(x)g(x)} = \lim_{x \to a} \frac{o(g(x))}{g(x)} = 0$ iff $o(g(x)) = o(g(x))$ as $x \to a$. Now, someone might quickly say "Aha! We have arrived at a tautology, so what we began with is true, which completes the proof." But this would seem to treat the sign "$=$" as it first occurs in the definition of little-o as an ordinary equal sign, committing a certain equivocation. Perhaps I am wrong; I am not sure how to deal with this though.
As for the second, let $h(x) = f(x) o(g(x))$, where equality is being used in its usual sense. Then $\frac{h(x)}{f(x)} = o(g(x))$, which means that $lim_{x \to a} \frac{h(x)/f(x)}{g(x)} = 0$ or $\lim_{x \to a} \frac{h(x)}{f(x)g(x)}=0$. This means that $h(x) = o(f(x)g(x))$ as $x \to a$ or $f(x) o(g(x)) = o(f(x)g(x))$ as $x \to a$.
First, notice that I assumed $f(x) \neq 0$ on some neighborhood of $a$. I don't believe this turns out to be an issue, however, since if $f(x)$ could be $0$ on an interval of $a$, the ratio wouldn't be defined and so we couldn't take its limit. The more fundamental issue is that equivocated between ordinary equality and the sort of equality that occurs in the first part of little-o's definition.
How do I get around this issue? On a seconding reading, believe Apostol commits the same equivocation when he proves parts (a) and (e), but I may be wrong about that. How can we prove the theorem without equivocating, if indeed such a thing has been committed?
EDIT:
On a related note, what I find really unnerving is when little-o appears in limit computations; it is though it were being treated as a function. For example, see this and this