If a BTC output can’t be found, does that mean the transaction never existed?

First, check what kind of query you’re using. Checking whether these unspent funds still exist now is not the same as checking whether the transaction existed in the past.

Bitcoin’s gettxout interface queries unspent transaction outputs. An output can be understood as funds left by a transaction that can be spent later. The query requires not only the transaction ID, but also the output index.

The documentation also explains that, by default, the query takes the mempool into account—the node’s store of unconfirmed transactions. If an output has been spent by a transaction in the mempool, it won’t appear in the query results. You can’t conclude from this alone that the original $BTC transaction never existed, or treat an unconfirmed spend as already confirmed on-chain.

When investigating, first verify the transaction ID, output index, and whether unconfirmed transactions are included. Then check the status of the original transaction and the spending transaction separately. Don’t turn “not in the unspent list” into “this historical payment never happened.” This article explains the scope of the interface; it does not query any actual transactions or balances.
Source: https://developer.bitcoin.org/reference/rpc/gettxout.html