Where to start?
The two most important things to consider in a team are type coverage (both offensively and defensively) and the specific roles each Pokèmon will have. Here's a rundown on type coverage, firstly:
Offensive: You'll want as vast a movepool as possible on each Pokèmon, so you can hit the widest range of types at least neutrally. For example, an Ice move and and Electric move in the same moveset gives almost perfect neutral coverage. You'll also want to give your Pokèmon moves that cover for their own weaknesses, e.g. Gyarados is weak to Rock moves, so giving it Earthquake or Waterfall will help it deal with Rock-type Pokèmon.
Defensive: Likewise, you'll want as vast a type range of Pokèmon on your team as possible - if all of your Pokèmon share a similar type weakness, often just one supereffective move can destroy your whole team. Also, it helps if your Pokèmon have types that cover for anothers' weakness - for example, Gyarados is super weak to Electric moves, so Garchomp is a good partner for it as it's immune to Electric moves - just switch it in when you think an Electric attack is coming and take no damage!
That's the basics of building a team based on types. Next, I'll tell you a bit about team roles. Many Pokèmon are suited for a specific task, and having a good balance of diverse team members to cover as many of these tasks as possible is crucial. Here's a list of some roles worth considering:
Sweeper - Generally a Pokèmon with a massive Attack or Special Attack stat, as well as a very high speed stat. A Sweeper's main use is to hit HARD and hit FIRST, often dealing massive damage if not immediately KO'ing an opponent. Basically, their role is to score as many KO's as possible in a comparatively small amount of hits. There are many exceptions, but as a general rule, Pokèmon suited to sweeping often have very low Defense and Special Defense, so don't expect them to be able to take any hits. Sweepers generally have four attacks in their moveset, but for many, one slot is occupied by a move that can boost their offensive stats even higher.
An example of a Sweeper is Mega Beedrill, which has ridiculously high Attack and Speed, but very low Defense and Special Defense.
Tank: Put very simply, a Pokèmon with high enough Defense or Special Defense to survive one or more hits from a sweeper. They often have decent offensive stats too, but are usually quite slow. Tanks often supplement their arsenal of attacks with healing moves, to make them last even longer.
An example of a Tank is Slowbro, which has very high defensive stats and a decent Special Attack stat, but very low speed.
Revenge Killer: This role centers around picking off weakened foes. Like a sweeper, Revenge Killers usually have high offensive and speed stats, but at the cost of defensive stats. Revenge Killers are usually sent into battle to replace a fallen teammate - thus, they often take no damage when sent in. Their role is to finish off the opposing Pokèmon that defeated your previous team member. The opposing Pokèmon in question has probably been severely weakened by now, so require little power to defeat. Therefore, Revenge Killers often employ priority moves, which are low in power but always go first - this allows them to strike first 100% of the time and finish off an enemy Pokèmon with little to no risk of return damage. Be warned, Revenge Killers are generally unsuited to staying on the field for a long time.
Examples of Revenge Killers are fast Pokèmon and/or Pokèmon that can use priority moves like Aqua Jet or Extreme Speed.
Wall: Essentially, Tanks on steroids. Walls, otherwise known as Stall Pokèmon, are similar to Tanks as they generally have extremely high defensive stats. In exchange, their offensive stats are usually rather lacking, and so is their Speed stat. Walls employ healing just like Tanks, but are also fond of inflicting status conditions and general HP-draining effects on their opponents. They will often use Protect in conjunction with these moves in order to drag a battle out while taking very little damage, slowly draining their targets HP over time. Walls very rarely use direct attacks, but there are exceptions.
An example of a Wall is Ferrothorn, which had high Defense and can inflict HP-draining status like Toxic and Leech Seed while using Protect to avoid damage.
Wallbreaker: Like the name suggests, Wallbreakers specialise in taking down Walls. They often use Taunt to prevent Walls from setting up the tools and status they need, rendering them near useless. Wallbreakers also employ status effects of their own on occasion. They use moves and abilities which can work around Walls, like Storm Throw (which ignores stat boosts as it always scores a critical hit) and Mold Breaker (which ignores the target's ability when attacking).
An example of a Wallbreaker is Staraptor, which can use Final Gambit, a move that ignores the Wall's stats and instead deals damage equal to Staraptor's HP.
Cleric: This one's really easy - a Pokèmon that can keep the team healthy by healing their HP or curing any status conditions. Clerics usually have enough HP, Defense and Special Defense to survive long enough to provide continuous support.
An example of a Cleric is Clefable, which can use Wish and Heal Bell to keep the whole team healthy.
That's it. All the things to consider when building a team. Sorry it's confusing, but I hope I helped nonetheless. Someone else can help you with your choice of induvidual Pokèmon.