VSPE is all about devices. Device is an entity that does some work. For example, if you need to redirect data from remote computer via Tcp connection, you can create TcpClient device that provides such functionality. Devices in VSPE divide into two categories: kernel mode and user mode devices. You can combine them as you like.
These devices are implemented by VSPE kernel driver. VSPE main goal was to create virtual ports, so they are work horses of VSPE. Usually they create virtual COM ports, but some of them (Mapper for example) just substitutes link for existing COM port by another link (e.g. COM9 can be opened as COM1). The most popular devices such as Connector, Splitter and Pair are the kernel mode devices. When VSPE is closed, kernel mode devices can continue to work (if you want to change this behavior, look at the preferences page).
These devices do not create virtual ports. They have no relation to the kernel driver and are implemented in user-mode, so for me they are easier to develop/modify and debug. When VSPE is closed all user-mode devices are destroyed. User mode devices can be very useful if you need to redirect data streams from various sources (Tcp, UDP etc), spy on another VSPE devices etc. They can be successfully used in conjunction with kernel mode devices.
This device is special. It can spy on some of VSPE devices and send intercepted data to some data stream. It is a very interesting feature for software developers. See Spy device
for more details.
Main purpose of VSPE was to make life of software developers easier. If your work is related to COM ports, you known how it is hard to debug your applications: you need sometimes to emulate input data, so you use null-modem cables or emulate incoming data using some another mechanism. VSPE exposes API that can be useful for developers that want to do something special or do not need VSPE GUI application at all, just ability to create/destroy VSPE devices. Look VSPE API
for more details.