So I also think I understood:
- the mnemonic is the "global" seed, from which the private keys for every coin are derived
- deriving has a "path", where every coin has its own number, so this is how the BTC and BCH deriving differs
- since keys are the same in both networks, and networks don't care about a "coin number", using keys in one another works
- when I add new accounts to my ledger, I assume it just iterates through the derived addresses
Is this correct?
You're definitely on the right track... your explanations are pretty close, especially with regards to the mnemonic generating the "global seed"... However, just to clarify a couple of points:
- deriving has a "path", where every coin has its own number, so this is how the BTC and BCH deriving differs
In theory, this is correct... however, it is not compulsory that a wallet follows a specific derivation path for a specific coin. In some instances (in the case of forks), you may actually need to follow a derivation path of a different coin so you can get the private keys you need to be able to access forked coins.
- since keys are the same in both networks, and networks don't care about a "coin number", using keys in one another works
In the case of BTC and BCH yes.. but not necessarily for ALL coins/networks. It really does depend on the networks in question. In your instance, because BTC and BCH share a common base and use the same format of private key, then yes you can use the private keys from one (and generate public keys/addresses) on the other. However, this may not be true for ALL coins/networks.
- when I add new accounts to my ledger, I assume it just iterates through the derived addresses
It doesn't iterate through the derived addresses... it iterates through the "accounts" in a given derivation path.
The format for a BIP44 derivation path is: m / purpose' / coin_type' /
account' / change / address_index
As you can see, there is an "account" value... so, in your ledger, when you first setup a BTC "account" it defaults to the one that uses the "0" account value... which starts with m/44'/0'/0' as the derivation path. So the path to the individual receive addresses in that account would be:
m/44'/0'/0'/0/0
m/44'/0'/0'/0/1
m/44'/0'/0'/0/2
...
m/44'/0'/0'/0/n
If you were to create a 2nd BTC "account", it would start generating addresses underneath the m/44'/0'/1' path. And the path to the BTC addresses in that "account" would be:
m/44'/0'/1'/0/0
m/44'/0'/1'/0/1
m/44'/0'/1'/0/2
...
m/44'/0'/1'/0/n
A 3rd account would be: m/44'/0'/2' with address paths:
m/44'/0'/2'/0/0
m/44'/0'/2'/0/1
m/44'/0'/2'/0/2
...
m/44'/0'/2'/0/n
etc etc.