Here's how I've done it since I first played Blue, I'm actually kinda impressed I was able to come up with a system like this when I was like 8 or 9 and was good enough I still use it. The Pokemon I plan on fighting with, in other words everyone excluding HM slaves, all get trained just as much as the others. So I never train more than 5 to battle with (4 "regular"/non-legendary and 1 legendary) because it spreads out the experience points too much. I rotate the Pokemon in my team, weakest first followed by the stronger ones (the HM slaves are at the bottom seeing as they aren't used.) So my team always stays no more than one level apart. As for training against wild Pokemon or trainers, at the start of the game I train my team so they are at the same level, or higher, than the 1st Gym's best Pokemon. For the most part my training is done against trainers, but not going past the town I'm in, unless that isn't enough. Then I'll make up the difference in the wild. That also applies if my team gets behind where they should be in level somewhere in the game but usually if I do my job in the beginning of the game I shouldn't have to do this any more than one other time in a game if even that. Any time I catch a wild Pokemon I want to use on my team, I train it in the wild, or VS seeker, until it reaches the level of my team, even if there are 10+ levels to make up, it wont fight a trainer I haven't perviously fought until it's the same level as the rest of my team. Then once that's done, I'll continue with my journey. I fight EVERY trainer in a game, even ones I can avoid, for more experience. This way my team is alway ready to fight any tough team and shouldn't need any extra training when I reach the Elite 4 in particular.
Here's how I've done it since I first played Blue, I'm actually kinda impressed I was able to come up with a system like this when I was like 8 or 9 and was good enough I still use it. The Pokemon I plan on fighting with, in other words everyone excluding HM slaves, all get trained just as much as the others. So I never train more than 5 to battle with (4 "regular"/non-legendary and 1 legendary) because it spreads out the experience points too much. I rotate the Pokemon in my team, weakest first followed by the stronger ones (the HM slaves are at the bottom seeing as they aren't used.) So my team always stays no more than one level apart. As for training against wild Pokemon or trainers, at the start of the game I train my team so they are at the same level, or higher, than the 1st Gym's best Pokemon. For the most part my training is done against trainers, but not going past the town I'm in, unless that isn't enough. Then I'll make up the difference in the wild. That also applies if my team gets behind where they should be in level somewhere in the game but usually if I do my job in the beginning of the game I shouldn't have to do this any more than one other time in a game if even that. Any time I catch a wild Pokemon I want to use on my team, I train it in the wild, or VS seeker, until it reaches the level of my team, even if there are 10+ levels to make up, it wont fight a trainer I haven't perviously fought until it's the same level as the rest of my team. Then once that's done, I'll continue with my journey. I fight EVERY trainer in a game, even ones I can avoid, for more experience. This way my team is alway ready to fight any tough team and shouldn't need any extra training when I reach the Elite 4 in particular.