Okay, I think I am only looking at TxOut scripts. How are TxIn scripts different? What are they for?
All transactions have inputs (TxIns) and outputs (TxOuts).
The TxOuts are where the coins are going, identified by the TxOut script (which is the "puzzle" I was speaking about).
In order to spend coins that you "own", you create a transaction and make one TxIn for each TxOut you want to spend. So the new transaction references a bunch of TxOuts from previous transactions in the global history. The TxIn simultaneously identifies what TxOuts you are spending and supplies the data to prove that you are authorized to spend them (public key and a signature over the entire transaction).
The TxOut script is the "puzzle" that needs to be solved, and your wallet app tells you that you "own" coins because it has identified that it knows how to spend them. When you do spend them, you put your sig and pubkey into a TxIn script, and those will be on the stack when the TxOut script is executed.
Let me reiterate: each TxIn corresponds to a single previous-TxOut being spent. And that TxOut is fully spent and not needed anymore (this would be pruning: right now all nodes remember all TxOuts, even the ones that are already spent, but you really only need to remember/store the TxOuts that haven't been spent). Therefore, a transaction "eats" a certain number of TxOuts, and then creates a bunch of new TxOuts that can later be spent the same way.