I've never understood the difference between the two! and they both recover 50% of the users max HP, so whats the difference, which is better?
If a Pokemon uses roost, it lands andrecovers health. This temporarily makes it lose its flying type. if the Pokemon is just flying type it will change to normal type for 1 turn when it is landed. Recover only heals 50 % of your HP. The links will help explain.
Link for Roost. Link for Recover.
Roost makes flying types lose that flying typing for the turn, Recover doesnt. And of course the Pokemon that can learn them.