Provisioning is an optional step that occurs after vagrant brings up the guest VM.
In your Vagrantfile, you can specify provisioning steps. The two kinds of provisioning I'm familiar with are shell and ansible.
Shell provisioning is most often done with shell scripts included in the Vagrantfile, but can be done with external scripts.
Ansible provisioning starts by pointing to an Ansible playbook.
It's also possible to do the equivalent of shell provisioning with Powershell on Windows guests, but I've never tried that.
What does provisioning do? There's a split. Many aspects of setting up a guest can be done by preparing a specialized "box" for Vagrant to load. But when you are starting with a more generic box, the provisioning step can be used to install additional software packages or configure the VM to work in a particular environment or relationship.
-- jmcg