Say I want to join the network and start a node, I have to fetch the entire block chain which:
- Can grow to unlimited size?
- I have to verify, by checking every block of theoretically unlimited count?
You only have to do that if you want to verify that none of the system's rules were violated at any point in its history. If you don't want to verify that, then don't bother. Nothing requires you to fetch them and check them.
If you don't care about ancient history, you can fetch the state of the blockchain as of some point in time. You can ask other people who have checked the history what the hash of the UTXO set was at that point. And then you can fetch that set and all the blocks after that.
If you only care that no more coins are in existence than are supposed to be and that the system's rules aren't broken after you start using the system, then you can fetch a minimal history set and not every block ever produced.
Another problem that you didn't mention is that if you were going to verify the full validity of every block ever produced, you would also have to understand the system's rules (including any bugs) for all previous times in the blockchain's history. For complex and evolving blockchains, that's also a huge problem.