Some information regarding how and when a complication vm is used is documented here
https://bosh.io/docs/deploying-step-by-step/
Basically they are used to compile the software packages inside the release that is uploaded to bosh. These compiled images are then saved into the director blobstore (internal or external). So for every release that gets uploaded the compilation step should only need to run once.
If you set the compilation vms to 0 i suspect opsman will complain as that is not a supported config. But ultimately if you were able to do this then installing or upgrading to new software would fail. Keep in mind these VMs only exist when apply changes is running. They are deleted after the complication step of the deployment is completed.
I am not sure what you are referring to when you say "apply-add on VMs". From a bosh perspective an addon is a software package that you defined in "bosh runtim-config". It is an essential way to customize all of you deployed vms. Bosh director will apply all of your runtime configs even if you do not have any custom add-ons. Opsman does automatically setup some runtime configs for you. You can view them using "bosh configs" command.
https://bosh.io/docs/runtime-config/#addons
https://bosh.io/docs/addons-common/