Hola @pedrourday,
1) no pasa nada, porque el modelo de conexión en la web es stateless. Si la petición llega al servidor, se ejecutará completa, y si no llega, no se ejecutará.
2) como las peticiones HTTP se envían al intérprete PHP después de terminar, no se puede hacer una operación a medias.
3) si el usuario por cualquier motivo, envía 2 veces lo mismo al servidor, se procesará dos veces. En este escenario no se llama "doble submit": eso es cuando se hace doble click en un botón y el navegador envían 2 petiones iguales una atrás de otra.
4) cuál sería el problema? Si te referís a que no se envíe dos veces lo mismo por accidente, una técnica habitual es deshabilitar el botón de envío luego del click... pero nada impide por ejemplo que un usuario complete dos veces el mismo formulario y lo mande al servidor!
Si tenés validaciones de modelo que limiten que se haga dos veces lo mismo, deberían estar implementadas en el servidor.
5) con las peticiones desde AJAX es todo exactamente igual: en ambos casos la petición se envía del todo, o no se llega, etc.
Una forma de minimizar estos problemas, es hacer que los formularios apunten a un script (un control) que realice las tareas, y luego de realizarlas vuelva a la página de origen con un header("Location: ..."); De esta forma al menos al apretar "recargar" no se envían por accidente los mismos datos.
Todo lo demás hay que implementarlo programando!
Saludos cordiales Pedro