Does Ethereum block stores state, transactions and receipts external to the block (like in some external storage)? and the block just contains the hashes of State_root hash, Transaction_root hash, Receipt_root ?
Almost.
- The state (e.g. account/contract/etc.) data is stored in a trie external to the block. The hash of the trie's root is stored in the block header.
- The transaction receipts are stored in a trie external to the block. The hash of the trie's root is stored in the block header.
The transactions themselves are slightly different. A list of transactions (I think in execution order) is stored in the main body of the block. However, a trie of the transactions is also maintained outside the block, and again the hash of the root of this trie is stored in the block header.