Include: Copies the content of the file into the spot the include command is. For that reason, multiple strict break logically
Import: The bmx/c/cpp/asm is compiled first. The resulting object file is then linked to the current source when it is compiled. Due to that, declarations etc within the other file can't know of what is in the current file as they get compiled before the current file is compiled. (the current thought knows of defined stuff that is accessable from outside as the other is already compiled when they merge so it can look whats present there)
Import: The bmx/c/cpp/asm is compiled first. The resulting object file is then linked to the current source when it is compiled. Due to that, declarations etc within the other file can't know of what is in the current file as they get compiled before the current file is compiled. (the current thought knows of defined stuff that is accessable from outside as the other is already compiled when they merge so it can look whats present there)