Both full node and pruned node can perform the following tasks:
- validate new unconfirmed transactions
- relay valid or invalid transactions and maintain its own mempool
- validate blocks independently with reference to its own blockchain replica
- relay new blocks
The difference between a full node and a prune node is that a pruned node cannot service
getblockheader requests as it does not contain the full copy of the blockchain. It cannot rebuild the current state of Bitcoin from the genesis block without re-downloading the entire blockchain.
Therefore, in summary, to spell it out more explicitly. A full-node is defined as a node capable of full validation with reference to its own complete blockchain replica which stores all blocks since the genesis block. It is also the only type of node which may recompute the current state of Bitcoin from existing blocks that form the longest chain. A full node is also the only type of node AFAIK that is capable of responding to