The definition of little $o$ in Calculus Apostol book is stated as:
From this definition, we can say that, $as\: x \rightarrow 0$ we have
$o(x^2)=x^3 \quad and\quad o(x)=x^3.$
which means that $o(x^2)=x^3=o(x)$ as $x\rightarrow 0$. We could even proceed to show that $o(x^2)=o(x^3)=o(x^4)=...=o(x^n)$ by letting them all equal to $x^m$ where $m>n$.
But then, for example, if we let $o(x^2)=f(x)$ as $x\rightarrow a$, we cannot proceed to show that $f(x)=o(x^3)$ since we would have show that
$$\lim_{x\to 0} f(x)/x^3=0$$
and we know that
$$\lim_{x\to 0} f(x)/x^2=0$$.
Which is not going so well. So is something wrong here?
Is the $=$ sign in the definition $f(x)=o(g(x))$ really the same with the $=$ we usually use?

NO! One should be careful that the expression $f(x)=o(g(x))$ in the definition can NOT be written as $o(g(x))=f(x)$.
Whenever, one sees the expression $f(x)=o(g(x))$ (as $x\to a$), it means nothing but $$ \lim_{x\to a}\frac{f(x)}{g(x)}=0\tag{*} $$
There are some subtleties when the notation $o(g(x))$ appears in different places of an expression.
(1) $f(x)=o(g(x))$ as in the definition means the function $f(x)$ on the left has the property $(*)$. The symbol $=$ here is not the usual "equal" sign.
(2) when $o(g(x))$ appears in an expression like $1+o(x^2)$, it simply means any instance of functions that has property $(*)$.
(3) A combination of (1) and (2). For example, the meanings of different $o(x^2)$ in an "equality" like expression $$ x^3+o(x^2)=o(x^2),\quad \textrm{as } x\to 0 $$ are different. On the left, $o(x^2)$ is understood as in (2) and thus $x^3+o(x^2)$ is a function; one the right, it means that the function on the left has the property $(*)$ with $g(x)=x^2$ and $a=0$.
(4) $o(x^3)=o(x^2)$ (as $x\to 0$) is a correct statement but $o(x^2)=o(x^3)$ is not:
if $f(x)$ is such that $\lim_{x\to 0}\frac{f(x)}{x^3}=0$, then $\lim_{x\to 0}\frac{f(x)}{x^2}=0$; but not the other way around. See also the discussion in Wikipedia here: https://en.wikipedia.org/wiki/Big_O_notation#Matters_of_notation