So, let's say I have an offline PC with Core that never connected to the internet. If I send 1 BTC to my address, how exactly can Core know the UTXO?
Without some "help" it won't.
But you can use blockchain.info for example.
See below:
At first you must know all unspent outputs for exact address. Then you are using any blockexplorer to get such information (txid)
Then you create raw transaction with
createrawtransaction command. It has next arguments
[{"txid":txid,"vout":n},...] {address:amount,...}txid - is our txid
vout - the number of output (starts from "0")
address - is address of recipient.
amount - is amount of coins which you want to send (one important moment - difference between you output "balanace" and this amount will become fee for miners. So, if you have 1 btc and want to send 0.1 you also must
show(means
send to it) change address)
Then you must sign your raw transaction with
signrawtransaction command and after that ( if status "complete" will be true ) you are able to send your transaction with online wallets (
https://blockchain.info/pushtx for example)
To be honest, you can do that without Core wallet at all. There many special tools wich can help you to create transaction if you know only private key and txid of genesis transaction.