Use Kuhn's algorithm for most problems: simple to code, works for in competitive programming. Use Hopcroft-Karp if you need for larger graphs (). Use max flow reduction if you already have a max flow implementation or the problem needs additional constraints (like edge capacities).
Use Hungarian algorithm for weighted matching where you want maximum total weight.