As a test, I just ran the following from my SQL Server 2008 R2 instance through a linked server to my SQL Server 2012 instance:
SELECT LocalServerName = @@SERVERNAME
, LocalServerVersion = SERVERPROPERTY('ProductVersion');
N'SELECT RemoteServerName = @@SERVERNAME
, RemoteServerVersion = SERVERPROPERTY(''ProductVersion'');';
This will show two result-sets, one for the local server, with server name, and version, and one for the remote server with the same details.
Executing this will prove that you can run stored procedures from down-level servers to up-level servers.