Hey there, this is Wayne and Layne, we created the Blinky kits! Glad you like the blinking programming interface, it's pretty slick. We certainly aren't the first people to come up with this sort of thing (the Timex Datalink watch from the 80s, and the BBC Micro computer that could be reprogrammed via a photosensor + tv back in the 70s, were certainly inspiration for these kits), but we really like how simple it can be. Also you don't need to install any device drivers on computer lab computers when we do summer camps and other group projects at schools :)
You can definitely do this on Arduino, but it may be harder than you think to make it work consistently and reliably. We have a lot of design documentation about the details of how it all works: http://www.wayneandlayne.com/projects/blinky/design/
We ended up taking hundreds of data points across multiple screen types in order to get the thresholding between light and dark squares to work reliably for all different types of displays and computers, but if you're just doing it on your own screen you should be able to get it to work pretty well without that. We have the phototransistors paired with resistors, in a sort of voltage divider configuration. If the sensor observes bright light, it conducts very well, and pulls the analog input pin down near 0v. If the sensor observes no light, it doesn't conduct very well, and the pull-up resistor pulls the analog input pin up near the battery voltage.
Start simple, trying to just transmit a byte string and echo it over Serial. We picked a pretty simple line encoding with separate clock and data signals, but there are bajillions of other options. (http://en.wikipedia.org/wiki/Line_coding)
We use a modified version of the standard Intel HEX file format for our blinky message transmission, which includes a per-"record" checksum (a record is 16 bytes). As as side effect of this, you can actually re-flash the user code in the same way, via the blinky bootloader, but it takes a while to transmit kb and kb of code :)
Since you can store multiple messages in the blinky kit, we have defined a message encapsulation format (also explained on that design page) with a header that specifies the type of message (pixel vs text), the message speed, and other details. We store the messages in EEPROM so they persist even after the power is turned off. With the text messages, we have a font table built-in so you only need to transmit one byte per character, instead of five bytes per character (each character is 5 columns wide).