Moving nextcloud into an apache VirtualHost block for use as a subdomain?

You just need to add a new VirtualHost definition, in place of the Alias and Directory directives:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName cloud.my-domain.dev
  DocumentRoot /var/www/nextcloud

  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>    

  SetEnv HOME /var/www/nextcloud
  SetEnv HTTP_HOME /var/www/nextcloud
</VirtualHost>

Both virtual hosts can run on port 80. That's how name-based virtual hosting works - it lets you run multiple hosts on the same IP address and port. Apache matches the value of the Host header that the client sends against the ServerName and ServerAlias directives, to determine which virtual host to serve them.

You should read the Apache Virtual Host documentation, especially the part about name-based virtual hosts.