Combine ApplicationCall with AssetTransfer and/or Payment

Can a transaction combine the transfer of multiple assets or multiple assets and application calls? Let’s say I want to transfer an ASA and some ALGO in the same transaction. Is this possible? How?

A single transaction cannot do two things at a time.

But you can group up to 16 transactions using atomic transfer. See Algorand Developer Docs

This group of transaction will behave as a single transaction: either all of them are executed or none of them. The only difference is that you will need to pay a fee per transaction, instead of a fee for the full group.
But the fees on Algorand are so low it should not be an issue.