Plutus is a DApp language, with on-chain and off-chain code.
On-chain - Plutus Tx, Plutus Core
PlutusTx -> PlutusCore (Lambda calculus assembly lang)
Off-chain - Plutus Application Backend (PAB)
HTTP, websocket interface for interacting with Contract instances.
PAB operations (start new instances, call instance endpoints, query instance state) are performed with this interface.
Chain index database
Queries served over HTTP API.
Store data from Cardano transactions. Uses. Needs to be co-located with Cardano node. Read-only, can be shared between PABs.
Expressiveness between node which answers queries related to ledger state, and
db-sync, which has full history of all transactions, and an expressive database schema for staking and other info.
PAB subscribes to ledger state updates from the node, using a socket protocol.