We (now!) use sysnonyms for everything that is either 3 or 4 part named. experience tells us that the name of the database / server WILL change! and its a right royal pain to change the code to match ...
We tend not to use [dbo] schema for those - for a 3-part name we use e.g.
CREATE SYNONYM MyDatabaseName.MyTableName
CREATE VIEW MyView
for a linked server I would make up a composite name to indicate Server + Database name - perhaps this (although usually I would abbreviate the Server Name, unless it was short and pithy already
CREATE SYNONYM MyRemoteServer_MyDatabaseName.MyTableName
However, historically we have very rarely directly referenced remote servers using 4-part naming, and instead we have used OpenQuery() as we have either had more control over the process, or better performance.