Doing digital I/O for all modern microcontrollers is pretty easy. Just set the pin to act as an output and then enable or disable it. More to come soon.
Let's say that you want to output lots of digital lines, way more than there are pins. In that case, one solution would be to use a serial to parallel converter chip. The idea is that the microcontroller can output, through a serial line, to a digital chip the bits associated to the digital signals. The chip will record the data in the order provided, latch it, then output them all through parallel digital lines. The drawback of doing this is that some time is lost sending the digital lines out of the serial line. This latency between signal output fro the microcontroller to actual parallel output from the chip will limit the rate at which the digital lines can be updated.
We've controlled, using an Arduino, something like 200 LEDs. They were connected through four separate serial lines on the Arduino, to banks of the serial to parallel converters. Since the serial to parallel converters can be chained, we chained about 4-5 of them for 32-40 digital output lines. This was done using a custom hardware design. However, it is possible to purchase LED strings where each LED (typically a larger, multi-color one) has it's own serial to digital converter and can be chained. I forget the number of lights, but I do believe that 50 - 100 is not unreasonable.