Synonyms and transactions
Whenever you create or drop a SYNONYM you are changing the definition of your database landscape.  So, yes I would consider that risky unless you have tight controls on when those steps can run.

If a connection resets the SYNONYM it is changing that synonym for the Server and database not for the connection. This means that a set of "complex work" running in another process could wind up switching from your remote data (for example) to the local data without any warning.  That would leave a mess to clean up.

View this like you would view dropping and recreating tables in a running system.  It may often work without anyone knowing, but it can indeed cause you problems.

Of course, if another connection tries to define a SYNONYM that already exists it will raise an error such as: "There is already an object named 'SY_SUBJECTS' in the database."  This will save you from switching context (but you must deal with the error) until after the synonym is dropped.  (There is no ALTER SYNONYM function, which would apparently be much more dangerous.)

Therefore if you try to change the SYNONYM without dropping it first, it will fail.  

If a code path runs DROP SYNONYM it will succeed once it can acquire the needed locks.  From MSDN: "References to synonyms are not schema-bound; therefore, you can drop a synonym at any time."  

So, the DROP SYNONYM will not stop a running transaction, but will wait for the transaction to finish.