2. There are editors. They let you type code. They might have syntax highlighting etc for C++ (and other languages)
3. There are build toolchains. They let you describe a project, i.e. what files to compile with compiler.
4. There are IDE (integrated development environments) that have compiler, editor, build tools, and whatnot. The compiler can be optional, i.e. an IDE can use different compilers.