I would definitely say bugsy's Pokemon gym in azeala town or ilex Forrest
well if you beat all the gyms in jotot you shoud be ready or victory road coud train you too
grass
victory road
Well that is a hard question. It all depends on the level of your pokemon. To train level 25-30 pokemon the best place is Desert Resort. Another place that is good is Cold Storage.
Mount Silver is the best place to train feraligatr Lv 42 and ampharos lv 37.
victory road is a pretty good place
Elite four is the best because they get better and better, and your Pokemon are equally matched up.
soulsilver and heartgold, it has the most trainers
The elite four
Route 45 is probably the best place.
find a place that has wild Pokemon the same level as it.
elite 4
ANYWHERE
An area with grass Pokemon would be best.
sky piller
Mt. Silver or the Pokemon league
probly at the pokemon leuge