Question: In my experience, the default **sitecore\_master\_index** and **sitecore\_web\_index** work pretty fast with Solr. We have around 1 million documents in the index and it returns a result in between 0 to 10ms. I can also rebuild part of the index using Rebuild Tree button on developer tab, so I don't have to worry that if some part of the index is broken I have to do a full rebuild (which takes a lot of time).

When and why is recommended to create a custom index? What are the best practices here?

Answer: 
Next to the reasons already mentioned by our Climber, I would add:

* possibility to tweak the index in all ways possible - you can go really far in this tweaking your fields in the index, or even using custom document options etc
* when in need of (several) ComputedFields, I normally start considering a custom index (so I don't need to include these in the full index)

but as your question already indicated: if you don't need them, don't use them (although I rather like them..)
An additional minor benefit is that it makes it easier to debug the index using a tool like Luke (<http://www.getopt.org/luke/>). For example, if you were developing a blog, you might have 100 documents in a custom index as opposed to a million in the Sitecore indexes. The custom index will be much easier to browse and debug (as it would have far fewer documents and potentially fewer fields) than the monstrous Sitecore indexes.