The short answer to all your questions is: yes, you can do that.
The longer answer to your questions is a question: what do you plan to do with the cloud? You can install Juju and MAAS on one machine, and then install OpenStack on three additional machines as an exercise in getting familiar with the software, or to try things out. If you want to put a cloud in production, however, you’ll generally want more machines. How many machines? That depends on what you want to do with the cloud.
In general, more machines will give you more flexibility and scalability, will eliminate bottlenecks, and will give you better performance in the vms and virtualized networking.
Is this going to be a multipurpose cloud that you are going to make available to multiple users? Or is this going to be a very constrained and specific cloud?
If you wanted to use OpenStack simply as an API to manage a handful of VMs for a specific purpose, you could do so with the setup that you’re proposing. You might have to do some experimentation with the placement of specific OpenStack services to get the balance for your cloud right.
If you’re going to make this cloud available to n number of users, with differing needs, then it would be better to run a larger cloud, on more machines. This will allow control plane services to get the resources they need, without fighting end user machines for cpu, network, and disk access. While everything will function with just a handful of machines, your users will be much happier with performance and speed if you build a cloud with more machines.