CFG to CNF conversion steps
1.-The definition that my teacher told me about CNF: It is a context-free language whose productions are from two types:

Type 1: A−>a|A∈N,a∈Σ

Type 2: A−>BC|A,B,C∈N

Nothing less and nothing more.

2.-You can always simplify a CFL but that is not necessary. At least from a theorycal point of view.

3.-    There isn't best rule. Remove useless production is just a way you can polish your CFL.

It is important to notice that when you have ϵ productions you don't meet the requirements for a context-free grammar so you can't make the conversion to CNF. If you eliminate those productions you are generating a CFG very similar to the original grammar but not equivalent . They denote different languajes although the differences can be considered trivial.

Then you mention "remove unit productions" and "adjust resulting productions" this are the steps of the algorithm to convert a CFG in a CNF.

Polish the grammar could be mandatory in a practical context.

4.- I still don't know anything about Greibach normal form so good luck!