For an insert, in order fastest to slowest
1. Bound table + save record as a form operation
2. SQL "INSERT INTO" based on dynamically creating an SQL string for a .Execute or a .RunSQL with the values placed in the string via concatenation
3. SQL "INSERT INTO" based on using Form("name")!control name references in the SQL to pick up from controls on that form
4. DAO operation where you have to do .AddNew, individually load values to fields in the created record, then do .Update as separate VBA statements
Our friend Isladogs (Colin) has done experiments on the differences between .RunSQL and .Execute, but I don't recall the details at the moment. On the other hand, if you are doing this from a form, it is a single-record case. I'm pretty sure that the difference between the cases will be minuscule for single-record operations. Your "wait" time for completion of ANY of these for the single-record case will be less then the time it takes you to click some button and then move your eyes to the screen. You are looking at a lot of human latency in form context.
You asked "what's the difference to the compiler?" The answer is "Not enough to worry about" (but probably also in the order I named). On the other hand, the run-time environment WILL care slightly more about the differences.
If you chose #2 AND pre-loaded a database object such as "Set MyDB = CurrentDB" then used MyDB.Execute for executing the SQL string, that WOULD be faster than if you directly used CurrentDB.Execute unless the SET statement were inside the code being timed.