Circuit switching predates packet switching. It was used in the older days of the analogue telephone network. Back then, when people had to place a call they were calling an operator and ask "I would like to talk with Anna". The operator would then literally (physically) connect their cable with Anna's cable, creating a dedicated connection, a circuit, between both.
The cool thing about doing this is that, while it takes a little bit of time to establish the connection, once you have the circuit built, there is a dedicated connection between you and Anna. No one else is using this path, which gives you guarantees.
On the Internet, there is no guarantee whatsoever, everything is best effort. We can be 100,000s using the same path. And that means we could have a terrible Quality of Experience (QoE).
Of course, circuit switching is extremely wasteful if the communication is bursty, which most of the Internet traffic is (at least today). With bursty traffic, the overhead of setting up a circuit is not worth it. That's why circuit switching got torn down, and it's not used anymore in the Internet.
The big question is though: Can we combine the advantages of packet and circuit switching, with their drawbacks? Enters the idea of virtual circuits.