The cardano-cli binary is bundled with the cardano-node release. Download that from here https://github.com/input-output-hk/cardano-node/releases
The cardano-cli talks to a node via a unix domain socket. That socket must be provided via the CARDANO_NODE_SOCKET_PATH environment variable. I have not seen another way of specifying the socket other then setting the env var.
The cardano-cli provides a rich interface to interact with the node to generate keys and addresses, build and sign transactions, query the ledger and more. The individual commans and some notes are down below.