Can 'terms' be shared across 'vocabularies'? I think I might have a fundamental misunderstanding of how taxonomy works in Drupal.

I've set up some vocabularies, such as 'accommodation', 'things to do' and 'eating out'. Within those, I've added parent terms 'accommodation types' and 'ratings' for accommodation, 'nationality' and 'suitable for' for eating out and so on.

Both vocabularies share some common features, though, such as 'location'. I set up 'location' within the 'accommodation' vocabulary first and then tried to make it available to 'eating out' by setting it as a parent, but I could only see other terms within the vocabulary.

What is the best way for me to allow each vocabulary to share a location without manually recreating and updating a 'location' term in each vocabulary (which surely must be the incorrect way of doing what I'm trying to achieve?)?
It sounds like you are using vocabularies where you could be using nodes.

So a node called the 'grand hotel' would have a rating, it may be suitable for some types of people and may also have a location. 

So you can create node type 'accommodation' which can use the vocabulary 'accommodation types', 'suitable for' and 'location'.

You could have a node type 'eating out' which can use the vocabulary 'cuisine type' but share 'suitable for' and 'location'

So each cafe or hotel could be a node of the respective type, but could appear in the search results for 'London' for example.