My one main() piece of advice would be:
If you haven't done any coding outside of BASIC/asm, forget about learning to write AmigaOS specific C/C++ code at the outset.
Not entirely, of course but I strongly advise learning the syntax of the language in an OS neutral way. Sure, that means writing a few no-fun "should compile anywhere" CLI programs to start with, but once you've mastered the basic syntax, anything you see in C for amigaos will make vastly more sense than they would otherwise.
As you've already done some ASM, you have an excellent background to understand C. This may sound a strange remark, but C is not as high level as many people would have you believe, which is one reason it tends to produce fast object code. A lot of concepts understood from assembler apply. In particular, pointers, which are often a source of confusion for people new to C are much more readily grasped as a concept when you already know about addressing modes like (a0), (a0)+, -(a0), (a0,d0.l*4) etc.
Before you even look at amigaos specific coding, you should be fully comfortable with functions, pointers, pointer casts (totally evil but essential for dealing with a lot of OS resources) and structures.
As you have worked with PHP, at least the brace syntax should be OK, as should be the notion of functions. A lot of people with experience only in basic struggle with C's universal function syntax which does not have a syntactical distinction between 'subroutines' and 'procedures'. A function may take parameters and either returns a value (procedure), or it doesn't (subroutine).