Are there any things to consider before granting VIEW SERVER STATE and VIEW DEFINITION to Developers?
VIEW DEFINITION is a database permission.  There is a corresponding server permission VIEW ANY DEFINITION you can add.  If you want grant some logins access to view server state and any all object metadata, you can do it like this:
create server role developers
grant view any definition to developers
grant connect any database to developers 
grant view server state to developers

You can grant SHOWPLAN for each database, or grant ALTER TRACE at the server level.  ALTER TRACE also allows the user to create SQL Traces which you might not want to allow developers to do on a production server.  This is all documented under Permissions.