But, how exactly does it know which address are mine?
Because the addresses are deterministically generated from the seed. The seed is a large random number (it's really a private key) and is supposed to be unique for each person.
And further more, how does it now it has all of them?
My assumption is that it would re-generate the keys (afaik they should be equal to the keys that were generated in the original wallet) and then use the blockchain to re-compose my balance. However, this would mean it should scan the entire blockchain, won't that take for ages? Further more, if I'm a heavy bitcoin user and already generated more then 10.000 addresses, then it should scan all of them? And how does it know I 'only' have 10.000 addresses? It could well be 100.000. At a given point I would probably notice that it's still incomplete as my balance is not matching, but suppose I totally forgot how much bitcoins I had.
Any light shed on this would be appreciated :-)
It doesn't. That's why the seed words are not necessarily a catch all backup. The best backup is to actually backup the wallet files periodically. When you restore from a seed it will generate some number of addresses, but it does not know that whether it has generated too many or too little addresses.
In order to get the balances, it does actually have to scan the blockchain. It will actually request from connected nodes the transactions pertaining to your addresses (and while doing so potentially leak information).