Here are what I knew about them:
- eth.accounts.create: Generate an address and private key for transaction but did not stored in anywhere.
- personal.newAccount: Create an account under node, so that we could get these accounts by eth.getAccounts(). But before transaction, the account need to be unlocked.
- eth.accounts.wallet.add: Create an account and private key stored in memory wallet, can get them by eth.accounts.wallet._accounts.
As the topic, which one is more secure, easier to mange in node and recommended to use for erc20 tokens transfer.