When I go to http://sub1.example.com it redirects me to C:/phpsites/app2/public but I don't want that to happen.
É porque você tem apenas um host virtual http (padrão)
<VirtualHost *:80>
DocumentRoot "C:/phpsites/app2/public"
ServerAdmin [email protected]
ServerName sub2.example.com
ServerAlias sub2.example.com
SSLEngine Off
<Directory "C:/phpsites/app2/public">
AllowOverride All
Require all Granted
</Directory>
</VirtualHost>
Você deve adicionar o virtualhost para sub1.example.com
<VirtualHost *:80>
ServerName sub1.example.com
Redirect 301 / https://sub1.example.com/
</VirtualHost>
A seguinte linha é realmente estranha
port 80 namevhost sub1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:43) alias sub2.example.com
Por que você está usando sub2 como alias em sub1 vhost?