In Extended Events what is the difference between rpc_completed and sql_batch_completed? I understand that rpc_completed is defined as the completion of a remote procedure call and sql_batch_completed is the completion of a t-sql batch.  However can anyone explain in concrete terms what the difference is?  When should I use one and when should I use the other?  Will most/all SQL commands trigger both events?
The difference is how the command is executed by the client. The client can directly execute a stored procedure or the client can send a sql batch.

To call a stored procedure from .NET you would use

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.StoredProcedure;


and to execute a batch you would use

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;


There are other things you need to set up like the connection, but the above shows the difference between the two execution modes.