You have to design your code to be portable. Take a look at BasiliskII for example, it was designed with portability in mind. Split the parts that are platform specific, you'll probably gain readability too. Many linux apps are just "hardcoded" posix apps not easily portable to non posix systems (that's why Cygwin exists for Linux and ixemul for Amiga). Take as an example SheepShaver, the latest maintainer posixified all the code making it non-portable to non-posix platforms.
If you decide to learn C amiga is a good platform for that too, the most important part is that you learn to use pointers properly, otherwise there's no much sense in using C.
If you decide to develop games you could use SDL library, it won't be fun to use on miggies. You can create your own functions for drawing sprites, backgrounds... and once SDL works then you can try to make an OCS/AGA/CGX version (it won't be easy but will be more effective than embedding SDL calls everywhere in your code).
If you decide to create an app try to split the logic part from the GUI and the storage one. You may have to rewrite small parts of storage part for taking care of endianness and you will have to rewrite GUI part for sure but it's not such a big problem, there are usually tools for that.
On Amiga systems the GUI of choice would be MUI as it's supported on all systems and for other OSes you can choose GTK, QT... keep in mind that these alien GUIs run awfully on Amiga if they run at all.