EUTXO stands for (Extended Unspent Transaction Output), the mechanism is, in spirit, the same as Bitcoin UTXO (Unspent Transaction Output) but very much improved.
The first difference is between scripting languages, Bitcoin uses Script which is a very primitive scripting language and has around 90 available OP Codes for use. Cardano uses Plutus which is essentially Haskell, a very powerful functional programming language.
The second difference is the information the script has to work with, Bitcoin script does not have access to the context information of the transaction, the user locking funds in a Bitcoin UTXO provides a partial Bitcoin Script, and the spender must complete the Script in a way that the Script leaves the value true on the stack after the execution ends, but the script is blind to the details of the transaction (the script has access to the signatures, but not the details about how the value is being transferred between parties), for example:
OP_HASH256 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000 OP_EQUAL
This script will hash twice the given data with SHA-256 (see OP_HASH256) and compare the result to the embedded hash (in this case the data is Genesis block header).
A Cardano Plutus script on the other hand has full access to everything that is going on in the transaction, how the ADA is moving, signatures etc:
-- | A pending transaction. This is the view as seen by validator scripts, so some details are stripped out.
data TxInfo = TxInfo
{ txInfoInputs :: [TxInInfo] -- ^ Transaction inputs
, txInfoOutputs :: [TxOut] -- ^ Transaction outputs
, txInfoFee :: Value -- ^ The fee paid by this transaction.
, txInfoMint :: Value -- ^ The 'Value' minted by this transaction.
, txInfoDCert :: [DCert] -- ^ Digests of certificates included in this transaction
, txInfoWdrl :: [(StakingCredential, Integer)] -- ^ Withdrawals
, txInfoValidRange :: POSIXTimeRange -- ^ The valid range for the transaction.
, txInfoSignatories :: [PubKeyHash] -- ^ Signatures provided with the transaction, attested that they all signed the tx
, txInfoData :: [(DatumHash, Datum)]
, txInfoId :: TxId
-- ^ Hash of the pending transaction (excluding witnesses)
} deriving stock (Generic, Haskell.Show, Haskell.Eq)
And the third difference is the introduction of the concept of Datum and Reedemer, Datums are linked to EUTXOs and are useful to keep track of state, and Reedemer is data that can be provided to the EUTXO when we want to unlock it, both Datums and Redeemers can be arbitrary data structures.
This is a good resource from the Plutus Pioneer Program that goes into detail on how the EUTXO model work:
https://www.youtube.com/watch?v=bfofA4MM0QE
The EUTXO in general it's more expensive and powerful.