The Pokemon league is proably the best place to train your Pokemon.If they are a low level give them an EXP share.
OR you can train at Mt.silver and also if high enough battle red for a ton of xp
Mt. Silver or the Pokemon league
The Pokemon League
The best place to train Pokemon level 40 and above is at Mt. Silver. Since you cannot gain experience through multiplayer battling, the highest leveled place is Mt. Silver. Pokemon average level 40-49 in Mt. Silver, so it is a good place to train.
Mount Silver is the best place to train feraligatr Lv 42 and ampharos lv 37.
The best place would be in the Fighting Dojo against the Gym Leaders. They give more experience points and have higher leveled Pokemon. They are also smarter than wild Pokemon.
The best place to evolve a Pokemon in Pokemon Heart Gold is at Mt. Silver.
find a place that has wild Pokemon the same level as it.
elite 4
ANYWHERE
An area with grass Pokemon would be best.
Give the Pokemon a soove bell and train it such as if its level 5 train it against Pokemon level 2,3, and 4
Really depends on 1 thing, if you have all 16 badges if you do go to the elite four they're Pokemon are 60+