Step 1 should be written explicitly as convert all sub expressions of the form $A \iff B$ into $A \implies B \land B \implies A$, and then convert all sub expressions of the form $A \implies B$ into $\lnot A \lor B$.
If you skip step (1), then step (4) won't work. This is because, for example:
$$\begin{array} {rl}
%
(\forall x~A(x)) \implies B &= \lnot(\forall x~A(x)) \lor B \\
%
&= (\exists x~ \lnot A(x)) \lor B \\
%
&= \exists x~ (\lnot A(x) \lor B) \\
%
&= \exists x~ (A(x) \implies B) \\
%
\end{array}$$
The point is that it is not always the case that $(\forall x~A(x)) \implies B$ is logically equivalent to $\forall x~(A(x) \implies B)$. So a counter example would be any instance of
$$(\forall x~A(x)) \implies B$$
where $\exists x~ (A(x) \implies B)$ isn't equivalent to $\forall x~ (A(x) \implies B)$. So for counter example, $A(x)$ is $x=1$ and $B$ is $1=1$.
So you can't just move quantifiers to the front of a formula unless all $\lnot$s are all on the leaves, and the only other boolean operators present are $\lor$ and $\land$.
Aside, hopefully your text mentions somewhere that this algorithm only works in a nonempty universe, since
$$A \land \forall x ~ B(x) = \forall x ~ A \land B(x)$$
doesn't hold when $A$ is false and the universe is empty. This post should help explain the reasoning behind the above algorithm.