user55819: According to espressif datasheet of the ESP8266 it uses 
MTMS (I2C_SCL) and GPIO2(I2C_SDA) for I2C.
However in several examples I've seen the typically use is GPIO(4&5) or GPIO(0&4) to connect to the I2C.
I guess all method works? but what is the real difference?

user4143: Many modules don't have the right pins for I2C available. Thus it was decided that the sensible option would be to use a bit-banged implementation of I2C using software only.
Also GPIO2 has a special meaning for booting, and using it is risky at best, and should be avoided.
Doing it 100% in software has the advantage that any pin combination can be used for I2C.

55819: <p>According to espressif datasheet of the ESP8266 it uses 
MTMS (I2C_SCL) and GPIO2(I2C_SDA) for I2C.</p>

<p>However in several examples I've seen the typically use is GPIO(4&amp;5) or GPIO(0&amp;4) to connect to the I2C.<br>
I guess all method works? but what is the real difference?</p>
 4143: <p>Many modules don't have the right pins for I2C available. Thus it was decided that the sensible option would be to use a bit-banged implementation of I2C using software only.</p>

<p>Also GPIO2 has a special meaning for booting, and using it is risky at best, and should be avoided.</p>

<p>Doing it 100% in software has the advantage that any pin combination can be used for I2C.</p>
