How do I change drupal_core_path to /public instead of /web?
You should be able to create a symbolic link to web called public.
ln -s web public
Your server will find the contents of web/ inside of public/ and vagrant will find what it needs in web.