Is the index db downloaded from peers or generated locally? When the user start the Bitcoin client for the first time, it will download the whole blockchain.
But what about the block index (blkindex.dat in older versions) ?
Is it downloaded from peers just like the blockchain or generated locally from the downloaded blockchain?
Then, does it depend upon the implementation (or version) or will the answer be the same for Bitcoin, Litecoin, or other random fork?
The version I talk about is an old fork that is still using blkindex.dat.
The only data exchanged over the Bitcoin peer-to-peer network are the raw blocks and transactions.  Everything else has to be generated locally from that data.

Litecoin and other forks work the same, as far as I know.

Of course, there could be some client implementations that get other data from other sources (not via the main peer-to-peer network), such as a dedicated server provided by the vendor.  Bread Wallet has an example of this.  But the Bitcoin Core reference client does not do that.