I do many projects with leds and my favorite weapon of choice just now is a couple of Max7219 chips, which can be found really cheap, the chip will use just 3 lines on the pic, and each 1 can handle 64 leds, and they are cascadable without adding any additional pic data lines. the benefit is that you only need 1 resistor for each group of 64 leds, and they will all be the same brightness. by using a small pot for the resistor on each max7219 means that you only have 1 adjustment to make to match the brightness of each batch of 64 leds, and it doesnt matter if you have 1 or 64 leds connected, they will all be the same brightness.
the added benefit comes from the ability to change the brightness in code (16 steps), and can individually address each led if neccessary. (allows flashing, running light patterns ect)
these chips are very easy to wire with just a connection to the pic, and a couple of decoupling capacitors, and 1 resistor to set led brightness.
code wise, its very simple too, especially as there is a built in test mode, and by entering testmode all leds are turned on at full brightness, so basically you are send just a single 16bit number to the chip, and on comes the display.
I probably made this sound much more complex than it really is, but believe me its really really simple. it runs in 5v.