Can the outputs of a transaction change over time?
No. A transaction is composed of a sequence of inputs and outputs in a specific order. This data structure is hashed and makes its way to the Merkle root and block header, and thus if the transaction were to change, all the blocks that follow would be invalidated.

It's possible that a fork with a different transaction double-spending the same inputs would usurp the chain you originally observed (less likely the more confirmations it has); and the status of these outputs can of course change from unspent to spent.