Are CREATE FUNCTION and DROP FUNCTION locking when used inside different transactions?
Community wiki answer:

Yes of course the other transaction will wait. (Nearly) Every DDL statement takes an exclusive lock on the object being modified (dropped, created). See Explicit Locking in the documentation.