The sender from msg.sender is the initiator of the message or caller of the function that sent the message.
Msg.sender will contain the address of the calling smart contract, or EOA.
The transaction origin (tx.origin) will refer to the EOA that signed and sent the transaction to the network,
So msg.sender can be either :
-EOA aka Externally owned account
or
-Contract account.
it's the EOA when the message, call, or transaction is initiated by an externally owned account.
it's the Contract account when a smart contract who receive a transaction or call originated from an Externally owned account (tx.origin) call a method that belongs to another smart contract.
The originator of the transaction will be the EOA (tx.origin), but the sender will be the Contract account.