The key difference between VHosts and sub-domains is that a VHost is basically a 'sub-domain' served on the same server and has the same IP, such that a single IP could be serving two or more different websites.
VHosts may or may not have public DNS records.
$ curl -s http://192.168.10.10 -H "Host: randomtarget.com"
<html>
<head>
<title>Welcome to randomtarget.com!</title>
</head>
<body>
<h1>Success! The randomtarget.com server block is working!</h1>
</body>
</html>