I was looking at a PIC16F874. It seemed to be alright but i wasnt sure about it.

Ive changed the 24 outputs to 16 outputs now to save money on triacs and waterproof sockets (i cant believe how much these cost!).

the PWM could be running constantly. Its to control bulbs (with fading) and it will be possible to fade some bulbs out and hold them at a certain brightness for a while.

Something i forgot to mention is interrupts. I know i need at least 1 interrupt pin. From reading a few datasheets it seems that most chips have 1 pin EG "RB0/INT" but some say you can use RB4-7 as interrupts too. Whats the difference between RB0 and RB4-7?

Im not sure how big the program will be. Im hoping pretty small. It will simply accept commands from serial then either use that data to set brightness levels for the bulbs or return a value from the EEPROM (the boxes address).

I take it and "I/O" pin is any input or output pin (excluding OSC in/out unless the OSC pins work as like RA4 aswell)

So i think i now need 23 I/O pins
(16) Software PWM outputs
(1) Serial in
(1) Serial out
(3) Multicolor LED
(1) Button
(1) Zero-crossing interrupt

23 + (2 OSC) + MCLR + VCC + VSS = 28 pins

Ive just had a quick search and found PIC16F882. Would that work?