I will second the ARM Cortex-M3 or even ARM7 based. Since you mentioned I/O, I suggest trying different vendors. Some vendors make you do read-modify-writes to registers to change output values, others make it simpler without the read-modify-write but that method has its cons as well. go to sparkfun.com and look through the development boards. Olimex (sold through sparkfun and others) have a wide variety of low cost eval boards, perfect for what you are doing.
I prefer the instruction set of the msp430 for learning assembler (some assembly is required if you really want to go embedded). Arm is a close second IMO. You can pick up an ez430 from ti for like 20 bucks or so, then for $10 more you can pick up three more msp430 boards. Unfortunately the AVR which is probably the most popular architecture for hobbyists (pic used to be) is a really ugly instruction set, you kinda have to use C to avoid it. Might as well go with something clean that is clean both in its instruction set which makes the compilers job a lot easier making the C result in cleaner code as well. both the msp430 and the arm family have gcc solutions as well as it is easy to use build and use llvm with its clang (llvm has a 64 bit problem with its gcc front end).
My bottom line is if you want to really learn about embedded and I/O and interrupts related to I/O. go to sparkfun grab a couple of $30 arm7s from lpc and st, and the stm32, go get something from stellaris, the 1968 or the 811 perhaps. An ez430 from ti (the stellaris family is now part of ti). Oh and back to sparkfun and grab an arduino mini, or lily pad one of the sub $20 but make sure to get the usb to serial thing that both powers it and gives you serial/debug access to to it. I was really really disappointed with the stm32 demo units from st or it was actually an rtos vendor. I am still very close to never buying from st again as a result.
EDIT
Wow I struck some nerves with my first answer. Probably strike some more with the edit.
There are a couple of ways to do it. One is the single register type thing. the read-modify-write solution. If you want to change one I/O output you need to read the register change the one bit that corresponds to the I/O pin (so that you dont change the other I/O pins) and write it back. This consumes instructions, which is bad for embedded, bulky and slow esp if you do it in a high level language. Another solution is tailored to bit banging. There is a register for setting I/O pins when you write to it you put a 1 in the location for the I/O pin or pins you want to set then you write, the bits you write zero will remain unchanged. And another register that when you write a 1 it clears the corresponding I/O pin. These are great for bit-banging. But bad if you dont know what the data value is. If you are taking some data from an input and just passing it on to the I/O pin then you have to do an if it is a one then write here else write there. Back to the bulky and slow. The point of my answer was that both of these solutions exist, some chips give you both, others have only one of the two solutions. It is a trade-off, and something worth experiencing, the vendors are different enough in this respect and others. Another example of differences among vendors and chips is some provide wire-or outputs and pull ups or no pull ups on the inputs which can make a difference if you have to start adding discrete parts for every I/O pin when you could have just chosen another vendor and saved everyone time and money. That kind of thing will make you unemployed quickly.
Cortex-M3, the choices I know of are the STM32 from ST which I would (did) buy from sparkfun. And the stellaris family formerly Luminary Micro, now owned by TI. I would avoid the 811 eval board, the clock was some number that was harder to find divisors for than the others. Also I bricked my first one within a few hours and had to order and wait for another. The others are less easy to brick. If you are careful with your IO enables and directions, and are just wanting to learn/play the 811 is fine. Hmm, did I just see that LPC has a cortex m3 now? If not they will, everyone in the arm business and some that are not will likely pick up the cortex-m3 for the embedded market. When you look at all the factors from tools, available programmers, cost per unit, cost for development, performance, power, etc, these things are hard to beat.
The cons to using the cortex-m3 vs arm7 based first is that with the arm7 you can learn the arm instruction set first then switch to the thumb subset. With the cortex-m3 all you have is thumb and thumb2. Also the interrupt vector table is goofy compared to normal arms. Not goofy as in bad or stupid but goofy as in different. Many would consider the ARM way as goofy, yes, understood and agree. the cortex-m3 is more of an exception to the arm family than the rule, so I would suggest learning it as your second or Nth ARM not your first. Here again, all good stuff worth learning of you want to know about this market and environment. The str711 board from olimex which you can get at sparkfun is a good one to start with. I think it was the sam7-64 that I spent more time on though. The LPCs are quite popular. sparkfun has a couple with the 9 pin serial port on boards so you dont have to add one.
Other than a few lines to boot the thing which many other people have already written, yes it is possible without using or learning ASM. I will touch more nerves with these statements but embedded means resource and performance limited so many traditional programming rules go out the door like not using globals for example. High level languages like C can become quite painful esp for bad instruction sets like the PIC. Because you are so close to the metal a noticeable amount of your code is not portable from one chip family to another or even within the same chip family some times. So using C for portability is not a valid argument. Most compilers are garbage, gcc for example is marginal (one size fits all fits no one by definition) at best. It depends on how much you want to control and how much you want to be a slave to others. By being interested in embedded systems to me means you want to be in control, that means understanding the vector table, knowing when and where and why your compiler is throwing away 50% or more of your performance, you could have made that remote control last longer with one battery instead of requiring three to just squeak by just by not knowing the tools and what they are doing. The vast majority of programmers in the world run their programs at half speed or less and double the size. Bulky and slow, just think of the electricity and storage savings. You normally dont see this on a desktop, but you will when you go embedded. Now saying that almost all of my code is in C, I normally only have a few lines of assembler to set the stack and boot and a few line functions here and there where the compiler will never compete or to cover problems that compilers tend to have.
I wanted an stm32, being at the time the only other cortex-m3. Wanted something to compare with the stellaris family. When they arrived I found that you had to live in their sandbox. I have zero use for the rtos, I want it removed and want to use my own bootloader and code. At least at the time that was an extra-cost item for something I had already paid twice as much as I normally would for competing products. So they are in their box, never to be reopened or used. Eventually to be tossed. Yes, half the problem was I didnt do enough research, I had assumed the boards were like other normal eval boards, this was a first time burn for me. Burn me once shame on you burn me twice shame on me. And it was the rtos vendor not ST that was the real culprit. So once the olimex stm32 board was available from sparkfun I bought one.
The arduino has this sandbox problem as well. So most of the searches you do looking for info will be within that sandbox. The difference is everything is open to view, the info is there if you want to do your own thing and have control of the board. The arduino is not as easy as the AVR butterfly for those that remember that platform.
The AVR butterfly and now the arduino is amazing in the sense of the followers it has drawn. Perhaps Atmel is just more user friendly as a company to overcome the instruction set and tools. They dont limit themselves to the AVR BTW they also have an ARM line and probably more stuff, I have not looked in a while. You definitely wont need stackoverflow for help if you go with an arduino. And you wont need any assembler if you dont want. And with sparkfun's arduino mini or lillypad the cost to play is next to nothing.
I think they could do soo much more with the msp430. Sure they have this uber low power market they want to hit. But the instruction set had this feeling of the pdp-11 when I first saw it. Very clean, I recommend the msp430 first for those wanting to learn assembly, then switch to ARM, by then you will see that all assembly languages are just syntax as far as learning. Performance and pain and other things are another story of course. I think they could easily expand the speed of the msp430 and allow for more use of the address space. I have spent some time recently fiddling with an opencore msp430 which you could put in an fpga and get more memory and speed and features if you like, could even add usb if you wanted. Not in a super low power package of course. I also dabbled in writing my own msp430 clone just to learn a little hdl, didnt finish it but had some fun.