Contracts are small user-defined programs that validating nodes will execute. For obvious reasons, it's extremely important that these programs are unable to cause side effects outside of their intended API. Therefore we have to virtualize these programs in some way.
You can find more information about the different components on the following wiki pages:
- Contracts SDK - Any tools, compilers, simulators, editors etc. used to create contracts
- Contracts VM - The virtual environment contracts will actually execute inside of.
- Contracts Runtime - The interface between the VM and the validating node. This includes when and in which thread contracts are executed and what API endpoints rippled exposes to them, as well as any aspects of sandboxing these endpoints.