I notice in virtual devices there are all kinds of connectors, Connector Switch, Connector Contact Sensor, etc. What are they for?
Those are not for use with virtual devices, at least not ones you create--only the "Virtual..." drivers (or custom drivers created for this purpose) are. The "Type" dropdown shows you all drivers available on the platform, including ones written for specific purposes like Z-Wave, Zigbee, and LAN devices or specific integrations.
The connector drivers you are asking about were written to be used with the new "Hub Variables" feature, (now-)Legacy Rule Machine global variables, or local Rule variables. You would not create such devices directly; you would use Settings > Hub Variables or the features within Rule Machine to create such devices for you as part of creating a variable connector, should you need one for whatever purpose. Different types of connectors can be used for a variable depending on what this purpose is--e.g., if you want a "regular" app to be able to turn on/off a switch to set the value of a Boolean variable (or read it), you'd use a switch connector. In general, you'd only need one if you're using these outside of Rule Machine or an app that doesn't have native support for variables (which most built-in ones do not right now and no user apps do at all since they are not...yet?...accessible to such apps without connectors).