SIGHASH_NONE implies that Input 2 will only spend if Input 1 is included in the transaction.
This is false.
Input 2 is essentially a blank check.
SIGHASH_NONE signs none of the outputs (I don't care where the BTC goes), and
SIGHASH_ANYONECANPAY signs only input 2 (I don't care who else is participating in the tx. This essentially creates an input, which if you give to anyone else, is the equivalent of "Here's a blank check for X BTC, do what you want with it".
Are they able to spend Input 1 (the SIGHASH_SINGLE) in another transaction without Input 2 included?
Since Input 1 is signed using
SIGHASH_SINGLE, only output 1 is signed under it. However, the
SIGHASH_ANYONECANPAY flag means that only input 1 is signed as well, which completely decouples it from input 2.
Now, if you were to remove the
SIGHASH_ANYONECANPAY flag from input 1, then you end up with a tx that is able to spend up to
input 1 + input 2 BTC, but is only spending
output 1. In this scenario, spending input 1 is dependent on spending input 2 as well. However, since input 1 is
SIGHASH_SINGLE, and input 2 is
SIGHASH_NONE, anyone you share the tx with is able to add their own outputs to it, but not add any more inputs.
Moreover, since input 2 is
SIGHASH_NONE | SIGHASH_ANYONECANPAY, anyone you share the tx with can extract just input 2, and reuse it in a completely different tx without requiring input 1. The way to counter that would be to remove the
SIGHASH_ANYONECANPAY , so that it is at least locked to being spent with, and only with, input 1.
What can I do to lock these two inputs together, with one of the inputs also being locked to an output, while still allowing people to add inputs to the transaction?
You could spend to to a single output, then create a new partial tx with that single output being spent with your required destination and amount, and sign that with
SIGHASH_SINGLE | SIGHASH_ANYONECANPAY