If the DNS record is proxied, you don’t need to add both A and AAAA records. Cloudflare will proxy IPv6 to IPv4 if there’s only an A record, or IPv4 to IPv6 if there’s only an AAAA record. However, it can be a good idea to add both for redundancy.
That depends on your setup. Does Google App Engine provide static IPs or a CNAME target?
For DNS entries that I never intend to un-proxy, I usually only create an AAAA record (or CNAME them to a name that only resolves to an AAAA record), in order to force Cloudflare to connect to my origin over IPV6. If you have proxied A and AAAA records for the same name, Cloudflare will only connect to your origin over IPv4 for some reason (even if your IPv4 connection dies and the IPV6 connection remains up, as far as I know, although I haven’t tested that thoroughly)
For DNS entries that I sometimes grey-cloud (or think I might sometimes need to), I create both so that there’ll be proper connectivity while it’s grey-clouded.