I found that there are two types of transfer I can use in an EOS contract, but I don't know what is the difference between them.
transaction-send: is an deferred transaction
action-send: is an in-line action
An action will be sent as part of the current transaction, meaning that if anything within the action fails, the entire current transaction will also fail. This also consumes your allotted CPU time.
A transaction is automatically a deferred transaction. Whether its contents pass or fail has no impact on the current transaction. If no delay time is set for the transaction, then it will execute in the next block. A transaction can contain multiple actions.