Type-C came into existance from the need of a language that is flexible as Typescript, but not tightly coupled with the javascript language. Since TypeScript's main goal is JS compatibility, it sets some side effects such as the confusion between null andundefined, and == and=== just to name a few. Hence, a new language had to be made.
Type-V is the virtual machine that runs Type-C programs. Think of Type-C as the Java compiler and Type-V as the JVM. The reason for creating a virtual machine instead of targetting existing VMs such as GraalVM or MoarVM, is to have full control over the language and the runtime. Designing a VM specifically for Type-C allows us to optimize the language and the runtime for the best performance and the best developer experience.
The Type-C compier is written in Typescript, for ease of implementation and proof of concept. A future compiler will most likely be written in C, but compilation is just the tip of the iceberg. The VM had to be written in C, hence the two projects needed to be separated.