Is it mandatory to always set the general name key?
Or can I avoid using the name key and just use the language specific name:xx keys instead? For foreign language speakers one could also set the int_name instead of name:en.
I am confused about the the explanation on Key:name description, so maybe better to ask here.
I don’t think it’s mandatory, but it should generally be used if possible because many data consumers probably assume that it would be present for objects that typically have a name.
The name tag should contain the locally-used name for the object. For example, if one walks up to the guesthouse and there’s a sign in front that says “Joe’s Guesthouse”, then that’s what goes in the name tag.
Also, one should not translate all names in all possible languages. If there is a Brugstraat in Flanders (Dutch-speaking region), you are not expected to translate this and add a tag name:en=“Bridgestreet” (just because brug is bridge and straat is street.)
Only for objects that really do have a name in different languages (think towns, rivers, seas, etc.) it is accepted to add name:XX in other languages than the local language. It is uncommon to do this for streets, restaurants etc.
I would not expect to see a guest house with the 4 names that you gave in the original post.
If the guest house is in the UK, only name=Joe’s Guesthouse.
if it is located in Germany I would expect to see name = Joe’s Gasthof
no other (name) tags.