Customization Recompile Procedure

For one of our customization, there are three files (.bpm, .p and .i) files. How does all three of these file types get recompiled when promoting to the server? Specifically I’m trying to understand how the sendEmail.i file once it gets updated, how it gets recompiled since it doesn’t actually get promoted to the server.