INSERT to a table from a database to other (same SQL Server) using Dynamic SQL
Unless I am mistaken, your problem is not as complicated as you think. From what I understand, you want to take some data from your current database, store it in variables and then insert that into another database, returning the id that was inserted. If so, this will do what you need:

CREATE PROCEDURE dbo.pr_consolidation_copy_group (
    @group_id numeric(10,0),
    @database_to varchar(100)
)
AS
SET NOCOUNT ON;

DECLARE @group_name char(100)
       ,@arrival datetime
       ,@departure datetime
       ,@contact_id char(82);

 SELECT @group_name = group_name ,
        @arrival = arrival,
        @departure = departure,
        @contact_id = contact_id
   FROM grp
  WHERE group_id = @group_id;

DECLARE @sql_cmd NVARCHAR(MAX);
    SET @sql_cmd = 'USE ' + QUOTENAME(@database_to) + ';'
                 + 'INSERT grp(group_name, arrival, departure, contact_id)'
                 + 'SELECT @group_name, @arrival, @departure, @contact_id;'
                 + 'SET @id = SCOPE_IDENTITY()';

DECLARE @params NVARCHAR(MAX);
    SET @params = '@group_name CHAR(100),'
                + '@arrival DATETIME,'
                + '@departure DATETIME,'
                + '@contact_id CHAR(82),'
                + '@id INT OUTPUT';

DECLARE @id INT;

   EXEC sp_executeSql @stmt = @sql_cmd
                    , @params = @params
                    , @group_name = @group_name
                    , @arrival = @arrival
                    , @departure = @departure
                    , @contact_id = @contact_id
                    , @id = @id OUTPUT; 

-- @id is now available to use
END


You can find more information about outputting a variable in the documentation for sp_executeSql.