While programmable with LUA, Arduino, ZBasic, ESP8266Basic and more, one drawback of the ESP8266, to quote email from Don Kinzer who created ZBasic, is...
It doesn't have any means to do highly accurate timing. Further, the ESP8266 has non-maskable interrupts and servicing them also interferes
with the timing.
This means you will need a PIC or other MCU to supplement the ESP8266 for many, many applications.

Here's a bit of hardware that simplifies that...
http://www.wemos.cc/wiki/doku.php?id=en:d1_mini

You can design shields that stack atop it a la Arduino.