Anywhere with grass pokemon. Especially forests, like the one near the start, Viridian i think. Try the grass gym to if your up to it.
grass
find a place that has wild Pokemon the same level as it.
soulsilver and heartgold, it has the most trainers
Mount Silver is the best place to train feraligatr Lv 42 and ampharos lv 37.
The best place to evolve a Pokemon in Pokemon Heart Gold is at Mt. Silver.
There is no best Pokemon on Pokemon HeartGold.
It's pretty obvious... EV train (I suggest EV Training in Defense)...
there are many legendary Pokemon in Pokemon heartgold, but the best is HO-OH
elite 4
ANYWHERE
An area with grass Pokemon would be best.
sky piller