Esp8266 header file code interpreat
I assume that your questions are the ones added as a comment to the code:

The code defines two version of a macro. The first version is used in release code. It executes x withouth checking for errors.

The second version is used in debug builds of the code; it executes x and checks the result for an error status. If an error has occurred, it prints an error message and stops execution.

The code:

(void) sizeof(rc);


is most likely used to prevent a warning about the unused variable rc. (void) is required to prevent yet another warning or error because sizeof(rc) is an expression and not a statement.

The block do { ... } while(0); is used to make the macro behave like a single statement. Without the while statement, the following block would not compile:

if (ESP_ERROR_CHECK(esp_wifi_start()))
    abc();
else
    def();


At least that's the intention. Unfortunately, it's not properly done. The semicolon at the end should be removed.