You need a distinct IP address per HTTPS host+port (or, to be precise, per certificate, because some certificate may have multiple Subject Alt. Names) because the client cannot tell the server which host it wants (and thus which certificate should be used) when it connects to the HTTPS port, unless you're using Server Name Indication (which is an SSL/TLS extension that seems more and more supported).
The plain HTTP virtual hosts run on a different port (usually 80) than the port used for HTTPS (usually 443) and are not affected by this restriction.
Even if you're not using SNI (in which case you're restricted to using one certificate per IP+port), you can have as many plain HTTP virtual hosts as you want.
A configuration like this should work (specify the port number in the VirtualHost):
<IfModule mod_ssl.c>
<VirtualHost www.name1.example:443>
ServerName www.name1.example
SSLEngine on
SSLCertificateFile /etc/...
SSLCertificateKeyFile /etc/...
...
</VirtualHost>
</IfModule>
# (optional)
<VirtualHost www.name1.example:80>
....
</VirtualHost>
<VirtualHost www.name2.example:80>
....
</VirtualHost>