in any Pokemon game, a Pokemon can't learn fly without an HM. as you progress in any Pokemon game, someone will give you an HM or you will find it. there are other moves that are also only able to be obtained by an HM (fly, surf, cut .etc.)
machop is a good hm slave. he can learn rock smash, rock climb, strengh,. in Pokemon emerald nincada is a good hm slave but in Pokemon pearl flash is not an hm. any water type can learn waterfal or surf espacially palkia.
Yes, it can learn any move, but it has a limited moveset by leveling up. It can learn a new move every 10 levels, but it can learn any TM or HM available. It can also learn all the tutor attacks. This is a great Pokemon to have to build an ultimate moveset.