user19338: I am reading "Mastering Bitcoin" written by Andreas and I found this explanation about "txindex option"

Transaction Database Index and txindex Option
By default, Bitcoin Core builds a database containing only the
  transactions related to the user’s wallet. If you want to be able to
  access any transaction with commands like gettransaction, you need to
  configure Bitcoin Core to build a complete transaction index, which
  can be achieved with the txindex option. Set txindex=1 in the Bitcoin
  Core configuration file

I am not sure what situations should I enable the option. In my understanding, I can set txindex=0 if I use bitcoind as just a transmission tool of Bitcoin so that I can save data and time to sync the blockchain data. Otherwise, if I intend to make a blockexplore site like Blockchain.info, I need to set txindex=1.
Is my understanding of this correct?

user8738: In addition to the other answers, txindex=1 is required if you want to use your wallet with Counterparty.
See the installation instructions at https://github.com/CounterpartyXCP/counterparty-lib

user81266: In addition, txindex=1 used to be required if you wanted to use LND (lightning network daemon). See https://github.com/lightningnetwork/lnd/pull/751

user7412: By default -txindex=0 Bitcoin Core doesn't maintain any transaction-level data except for those 

in the mempool or relay set
pertinent to addresses in your wallet 
pertinent to your "watch-only" addresses

If "txindex" is set to true (1), Bitcoin Core maintains an index of all transactions that have ever happened, which you can query using the remote procedure call (RPC) method getrawtransaction or the RESTful API call get-tx.
Several popular wallet and "block explorer" programs require -txindex=1. Note that txindex does not alter the behavior of Bitcoin's peer-to-peer interface.

user18196: If you're using Bitcoin Core just for your own personal use, you probably don't need the -txindex=1 option. But, if you're using Bitcoin core for development or blockchain analysis of some sort, you will need to set -txindex=1 to be able to get transactions data for any transaction in the blockchain. 
The tradeoff is just that keeping an index is slightly slower, but allows you to do things like:
bitcoin-cli getrawtransaction aec2729f5e46750b310b6feadcf853098aa86df74f93322a701c29cd68b22568 

(where aec2729f5e46750b310b6feadcf853098aa86df74f93322a701c29cd68b22568 is the ID of a transaction that does not affect your wallet at all).
Also, if you have been running your client for a while but haven't had txindex=1 set, then it might take a few hours to build the index. If you want to rebuild, launch with the -reindex option.

19338: <p>I am reading <a href="http://chimera.labs.oreilly.com/books/1234000001802/ch03.html#_exploring_and_decoding_transactions">"Mastering Bitcoin" written by Andreas</a> and I found this explanation about "txindex option"</p>

<blockquote>
  <h3>Transaction Database Index and txindex Option</h3>
  
  <p>By default, Bitcoin Core builds a database containing only the
  transactions related to the user’s wallet. If you want to be able to
  access any transaction with commands like gettransaction, you need to
  configure Bitcoin Core to build a complete transaction index, which
  can be achieved with the txindex option. Set txindex=1 in the Bitcoin
  Core configuration file</p>
</blockquote>

<p>I am not sure what situations should I enable the option. In my understanding, I can set <code>txindex=0</code> if I use <code>bitcoind</code> as just a transmission tool of Bitcoin so that I can save data and time to sync the blockchain data. Otherwise, if I intend to make a blockexplore site like <a href="https://blockchain.info">Blockchain.info</a>, I need to set <code>txindex=1</code>.</p>

<p>Is my understanding of this correct?</p>
 8738: <p>In addition to the other answers, <code>txindex=1</code> is required if you want to use your wallet with Counterparty.</p>

<p>See the installation instructions at <a href="https://github.com/CounterpartyXCP/counterparty-lib" rel="nofollow noreferrer">https://github.com/CounterpartyXCP/counterparty-lib</a></p>
 81266: <p>In addition, txindex=1 used to be required if you wanted to use LND (lightning network daemon). See <a href="https://github.com/lightningnetwork/lnd/pull/751" rel="noreferrer">https://github.com/lightningnetwork/lnd/pull/751</a></p>
 7412: <p>By default <code>-txindex=0</code> Bitcoin Core doesn't maintain any transaction-level data except for those </p>

<ul>
<li>in the mempool or relay set</li>
<li>pertinent to addresses in your wallet </li>
<li>pertinent to your <a href="https://bitcoin.org/en/glossary/watch-only-address" rel="noreferrer">"watch-only"</a> addresses</li>
</ul>

<p>If "txindex" is set to true (1), Bitcoin Core maintains an index of all transactions that have ever happened, which you can query using the remote procedure call (RPC) method <a href="https://bitcoin.org/en/developer-reference#getrawtransaction" rel="noreferrer"><code>getrawtransaction</code></a> or the RESTful API call <a href="https://bitcoin.org/en/developer-reference#get-tx" rel="noreferrer">get-tx</a>.</p>

<p>Several popular wallet and "block explorer" programs require <code>-txindex=1</code>. Note that <code>txindex</code> does not alter the behavior of Bitcoin's peer-to-peer interface.</p>
 18196: <p>If you're using Bitcoin Core just for your own personal use, you probably don't need the <code>-txindex=1</code> option. But, if you're using Bitcoin core for development or blockchain analysis of some sort, you will need to set <code>-txindex=1</code> to be able to get transactions data for any transaction in the blockchain. </p>

<p>The tradeoff is just that keeping an index is slightly slower, but allows you to do things like:</p>

<pre><code>bitcoin-cli getrawtransaction aec2729f5e46750b310b6feadcf853098aa86df74f93322a701c29cd68b22568 
</code></pre>

<p>(where <code>aec2729f5e46750b310b6feadcf853098aa86df74f93322a701c29cd68b22568</code> is the ID of a transaction that does not affect your wallet at all).</p>

<p>Also, if you have been running your client for a while but haven't had <code>txindex=1</code> set, then it might take a few hours to build the index. If you want to rebuild, launch with the <code>-reindex</code> option.</p>
