Use NodeMCU only if you need the wifi. It's a great part for that - dirt cheap, builtin wifi - but it's a much less full-featured chip. It's also 3.3v, and a lot of the arduino-centric breakout boards you find online assume 5v, and you need to perform some due diligence to make sure they will work with a 3.3v board. Library support on ESP8266 is worse than on AVR-based boards (like the cheaper arduino's), though possibly better than SAM based boards due to the huge following ESP8266 has (due to it being cheaper than a cup of coffee with builtin wifi).
There is an ESP8266 hardware package for the Arduino IDE that should work with the NodeMCU boards - though I haven't tried it (I use Espruino on my ESP8266 boards)
You can also think about using an ESP8266 module to provide WiFi connectivity to an AVR-based Arduino to get the best of both worlds (the superior library support and better peripherals of the AVRs, but with wifi). This is widely done and there are well supported libraries for this.
For other components - search ebay (or amazon, for faster delivery but higher prices) for resistor pack, capacitor pack. You want a selection of resistors and capacitors. An assortment of ceramic caps would be my choice if only getting one kind of cap, though it's good to have a selection of larger electrolytic caps on hand too - for power supply filtering (for example on WS2812 LED strips or ESP8266 module used to provide wifi to an AVR).
Of course, a microcontroller board alone is usually not enough - maybe you want sensors to detect environmental conditions (temperature, acceleration, light levels, and so on), or other devices to control (servos, LEDs - maybe those WS2812 strips or boards, LCD displays). There are all manner of sensors and devices on breakout boards available from adafruit, $parkfun*, and ebay (the ebay ones are generally clones of the adafruit or sparkfun ones, sold for a fraction of the price, but with non-existent support/documentation).
IMO the easiest displays to work with are the 1602 or 2004 character LCDs, with the I2C backpack - I love those and use them all over the place.
I started with an Espruino (they have a wifi board that has integrated esp8266 connected to a decent micro) - the library support is worse than Arduino, and slower because of the overhead of interpreting js on the micro, but it's really nice for getting started because JS is easier to write than C, and it gives you a live console where you can, say, type digitalWrite(pin,1), press enter, and the pin gets written high. This aspect I found extremely helpful. The boards are kinda expensive, but an incredible learning tool. I use Espruino when doing things that interact with the internet, and sometimes for understanding a piece of hardware that I don't know the details of (by controlling it from the console, since it eliminates the write-upload-test cycle). (Espruino.com). That said, I rarely use them for permanent projects, at least not on the official hardware due to the cost - I run it on ESP8266's, and on a development board of my own design based on the original Espruino Board
- I have a very low opinion of sparkfun. All the price of Adafruit, but without the quality documentation nor the level of innovation of Adafruit.