What's the difference between virtual circuit switching and circuit switching?
In the good old days of cables that consisted of a large number of copper wires, and switching stations with relays that effectively implemented a big crossbar, circuit switching meant that the provider put all the switches in the position that made a real (electrical) circuit from one client to another. The two literally had a cable for their own private use (for as long as then connection was established).

Virtual circuit switching gives the clients the impression that they have a dedicated cable, while in fact they are allocated time-slots (or frequency bands, or some other shared slice) in all the cables that make up the connection. This better matches the current economic reality that a cable is very expensive, but has a bandwidth that far exceeds the needs of most clients, hence sharing is economical.

The difference between a virtual switched circuit and plain packet switching is that for a virtual circuit all the steps that make up the connection are determined when the connection is established, and the buffers and bandwidth at each step is claimed and thus guaranteed. For (plain) packet switching there is no such circuit creation: each packet finds its own way through the network, and has to hope that sufficient buffers and bandwidth is available at each step.