You can get a feel for the variety of boards that work using the 'mbed' concept of an online toolchain by looking here:
https://developer.mbed.org/platforms/To use the toolchain, you have to actually buy a board and use the .htm file on the board to register the device. No cost but still there is a registration hoop to jump through.
8 bit PICs like the 16F family are often a good solution but they have a truly ugly architecture. They are a PITA to program with assembly language and C compilers spend most of the code creation dealing with banking and paging. Until recently, there simply weren't any decent compilers because the chips were too limited to handle the language. An 8 level (fixed) stack is not encouraging. I don't know what compilers are doing for this family at the moment, I walked away years ago.
On the subject of AVR, if you want to use AVRs, you might as well use Arduinos and there is a ton of example code and libraries available. Everything that can possibly be done with an Arduino has been done and the program is out there for downloading. In my view, it is absolutely the fastest way to get started with microcontrollers. The Mega 2560 is a pretty powerful board but the standard Arduino Uno is quite capable and pretty much the benchmark device. You can also design an ATmega 328p project using the Arduino board as a programming platform and then plugging the DIP chip into some other board.
ARM is where all the new work is being done. There are several flavors with advancing capabilities but the more modern Cortex Mx devices are easy to program (in the sense that assembly code is no longer required) but can quickly get to be overwhelming with their peripherals or the provided HAL libraries. I have a hard time getting up the enthusiasm to use these libraries because instead of writing the code I want, I wind up having to understand the code I got (including interactions with everything else on the chip). I'm just not a fan of the abstractions.
That said, I am happy enough to use the mbed library (adding my own interrupt handlers) and the provided TCP/IP stack. I certainly don't want to recreate those but for a somewhat smaller project, I would prefer to start at the iron and work up with my own code. Like I used to do with the LPC2106 and LPC2148. Writing code right down in the dirt.
Alas, the more modern chips are probably sufficiently complex that it doesn't make sense to work at that level.
Summary: I would start microcontrollers with Arduino projects. I would progress to the LPC1768 mbed and if I needed more, I would look at some of the STM offerings. One way or the other, you have to start somewhere.