- Ether is not ERC20 compliant, and so it does not support functions such as ERC20 which are applied on ERC20 standard token.
- Let's say that there is a contract that provides a periodic service to subscribed accounts. To subscribe for this service, the contract accepts a certain amount of a specific ERC20 token as a subscription fee. To do this, the contract must have a public or external function that calls the token.transferFrom() function and charges the caller in an ERC20 token. This way, a user can pay for the service using the ERC20 token. Note that you should not transfer the ERC20 token directly to the service contract, as you might lose your tokens.
- Yes, there are some other token standards that have been proposed, such as ERC223 and ERC777. Some of these are still under consideration, and are not widely used in production. As of today...