Quil is the language you'll use to write quantum programs and the Quil SDK is a suite of software to help you build and run Quil programs. See What is Quil? to learn more about Quil the programming language. Here, we'll cover the tools in the Quil SDK available to you.
pyQuil is Rigetti's flagship library for building and running quantum programs written in Quil. It provides high level tools for writing, compiling, and running Quil programs against the QVM or Rigetti QPUs. pyQuil is the primary tool most users will use to interact with QCS. However, it's important to note that pyQuil joins multiple related tools and libraries together.
In the previous step you installed quilc and the QVM. We run both of these tools in the background as servers so that pyQuil can use them to compile programs for a target QPU and simulate programs against the QVM, respectively. Without them, pyQuil is limited in functionality.
For most programs, compilation withquilc is an essential step in preparing the program to be run. It both optimizes and nativizes your program for the target QPU by using information about its architecture. See How Programs Are Built & Run for a more in-depth dive on quilc and the other steps involved in preparing a program to be run.
The Quantum Virtual Machine is a state-vector simulator that executes Quil programs on a virtual machine that can model a real QPU or generic quantum system. The number of qubits it can simulate in a single program is typically limited by the amount of system memory available to it. In addition to a limited qubit count when compared to a flagship Rigetti QPU, there are other important differences to keep in mind. See QPU vs. Simulator (QVM) for a detailed guide on the differences between the simulator and a real QPU.