If you intend to succeed as a Pokemon trainer, you need to understand and exploit Type Match-Ups during battle, which is akin to a more complicated version of Rocks, Papers and Scissors.
Each of the 800 or so Pokemon is assigned one or two Types, which reflects the characteristics of the Pokemon. For instance, a fish Pokemon is generally going to be a Water-type, while a Pokemon that's on fire is a Fire-type. How about a Pokemon that's on fire and got wings? Probably a Fire and Flying type.
To add to this, every Pokemon move will have its own Type as well. A move such as Ice Beam is going to be an Ice-type move, for example.
How does this all affect battling though? Just like in real life, certain Types beat other Types or are beaten by them. Water puts out fire, fire burns grass, grass soaks up water and so forth. In the same manner, Water-type moves deal more damage to Fire Pokemon, etc.
If you attempt to go the other way round, it doesn't work quite as well: fire can try its best to evaporate the water, but it'll have a very hard time. Likewise, Fire-type moves aren't so hot against Water-type Pokemon.
That's just a massive simplification though. For starters, not all Pokemon Types match real life. Or if ghosts and fairies do indeed exist, then give us a call... However, you get the general idea.
There are other possibilities too. Some Types aren't better or worse than other Types, so they simply do standard damage to those Types. Overall, around half of the match ups are like this. On the far extreme, some Types are immune against certain Types and sustain zero damage from moves of that Type.
Our Handy Type Match-Up Table
After defeating a particular Pokemon species, the game will helpfully inform you how your moves fare against the same Pokemon species. "Effective" means it works, "Not very effective" means it deals half or less damage, while "Super effective" means it deals twice or more damage.
When facing a new and unidentified species, you won't have this luxury though. In addition, it's honestly a lot more satisfying if you learn the Type Match-Ups yourself. Which is where Our Handy Type Match-Up Table (TM) comes in!
How to Use
First, check the left column to match the Type of the move you're using. Then check the right column to match the Type of the opposing Pokemon. For example, if you're using a Grass-type move, it would do lot a more damage to Water, Ground and Rock Pokemon.
When battling against a Pokemon that has two Types, things get a bit more complicated, but not by much if you keep your logic straight. All that happens is that the damage multipliers for both Types are multiplied together.
For example, say, you're facing off against Pelipper, which is a Water and Flying type Pokemon. Grass moves normally do 2 times damage to Water-types, but Pelipper is also a Flying type and Grass moves do 0.5 times damage against those. 2 times 0.5 is 1, which means Grass moves do standard damage.
Likewise with Ice moves. They're good against Flying, but sub-par against Water. Rock moves still do 2 times damage though, since they're good against Flying and neutral against Water. The kicker is that Electric moves do 4 times damage since they're double damage against both Types!
For the majority of situations, you need only consult the Type Match-Up chart to plan your way to success. However, be warned that it's not completely full-proof. You also need to pay attention to other things such as the Pokemon's Abilities or held items.
The biggest thing to watch out for, especially if you love using Ground-type moves is the Levitate Ability, which confers full immunity to Ground-type moves. If a Pokemon doesn't have wings, but seems to be floating, it may have Levitate, so watch out.
On the flip side, Normal and Fighting moves are normally useless against the sinister Ghost-type. But if a Pokemon has the Scrappy Ability, their Normal and Fighting types will successfully connect. The moves Foresight and Odour Sleuth have a similar effect as well.