Unlock time allows you to send a transaction to someone, such that they can not spend it until after a certain block height, or until a certain time. These locks are per transaction, not per output. This means any returning change will be locked too. ***Do not unintentionally lock your change outputs.***
Using `unlock_time` has privacy consequences for the user(s) (and the wider Monero network if it is flooded with these). The value is public on the blockchain, so be aware of potential clustering. The feature is rarely used and may be removed in a future Monero release, so the Monero developers advise against building critical infrastructure that depends on this feature.