Eso se llama guarda.
En ese momento aún no ha entrado en marcha el compilador, es el preprocesador quién está haciendo su trabajo para darle el código al compilador en la siguiente fase.
Para entender qué ocurre deben saberse unas cuantas cosas antes:
Un símbolo sólo se puede declarar una única vez.
Para poder usar objetos y funciones el compilador debe conocer su tamaño con anterioridad. Las librerías son objetos y funciones genéricos que se pueden usar en multitud de programas diferentes.
Para eso existen los archivos de cabecera: declaran esos símbolos para que el compilador sepa usarlos.
Una librería puede depender de otra, por lo tanto incluirá esa cabezera y si incluyeras las dos librerías en tu código tendrías el error de haber declarado dos veces el mismo símbolo.
Bien para solucionar eso están las guardas del preprocesador, que simplemente es mirar si existe un símbolo. Sí éste existe no hacer nada, pero si no existe se hace todo el trabajo necesario.
Con el
El preprocesado mira si el símbolo LIBUSBI_H ha sido definido con anterioridad.
Si está definido el preprocesador saltará hasta #endif.
Si no está definido lo primero que se hace es definirlo (poner la guarda para evitar que se repita la definición)
Y a partir de aquí todo el código para declarar objetos y funciones.