[Samsung Galaxy Nexus] maciel310:
1. From my understanding, you want to use a pull up/down based on what makes logical sense in your circuit to be the default when the switch is open. The only time when a significant amount of current flows across the pulling resistor is when the switch gets closed. Even then, though, you're talking about a pretty small amount of current, especially compared to the charging current. Assuming 1.8V supply voltage and a 10k resistor, it'll use 0.18mA when the switch is closed, compared to the 500mA or 1000mA when the phone is charging.

Also, the ATTiny85/45 has internal pull-ups that you can take advantage of to keep from having to even bother with the external resistors, which would simplify your circuit considerably. Take a look at this page for some details of how to use them with the Arduino library: http://arduino.cc/en/Tutorial/DigitalPins . Basically all you have to do is set the value of the pin to HIGH after you set it as an input, and that'll activate the internal pull-up resistor. Then just connect your switch between the pin and ground, and you should be able to read it reliably.

2. It shouldn't hurt the circuit at all, though you might end up with either unstable charging if the voltage drops too low by drawing too much current, or possibly damaging the wall power supply (melting the internal wires, etc). I don't think the risk of this would be too high, but it would be a possibility. Basically the shorting of the data pins is a de facto standard in the industry as a way for the charging circuit to detect if the charger is rated to run at the higher current levels, but doesn't serve any electrical purpose other than that. If you are only dealing with your own power supplies that you can check the mA rating, and won't be plugging this in to a computer to charge, you should be fine to hard code it to AC without messing with shorting any pins or modifying cables.

3. Not sure, haven't dealt with that company at all.

4. I believe that is handled by the 100ms pulse that the phone sends out initially to start the handshake process. This (in theory) is significantly longer than any high pulse that would be sent out with the spdif communication, thus it would fail to trigger the main branch of the code. Also, the phone doesn't start sending off any SPDIF data over the middle pin until the handshake is complete (and the dock indicates that it wants the audio data), so there won't be any stray signaling during the actual handshake itself.

5. I believe the line buffer is simply being used as a voltage shift here. The input of the line buffer is sensitive enough to be triggered at the 1.8V that the phone sends the data out at, and the output voltage level is based on the supply voltage to the chip, which is 5V. The TOSLINK connector requires the 5V signal in order to operate. I believe you could probably get rid of that if you were able to find a toslink connector that worked at 1.8V (not sure if they exist). I'd imagine that you could also use a transistor to increase the voltage. Someone tried that before unsuccessfully (see page ~16), but that very well could have been due to the tied together data pins.

Note, that EE is not my area of expertise (I'm more software by trade) so I could have some stuff mixed up here. If I've messed anything up, someone please correct me.

Hope that helps clear things up.