My understanding of HB LEDs is all based on projects where people used off the shelf components, so designing from scratch isn't something that I totally understand yet. That said, it's convention in the examples I've seen to wire in series, so if one LED goes out, you don't ruin the rest by overdriving them
Lets assume you are still using 3W leds, if one went out, there would be 1.16A of current available to the other 7, or each would see an additional .166A (~.6W). If you're over driving a 3W resistor by .6W, thats only 20% more (aka, they will probably be fine). Also note that LEDs don't generally just 'go out'. The MTBF is like 1 million hours, they generally only go out if you over drive them to start with. If you're still worried about an LED going out, design your system with 3W leds, but only drive them to 2.4W, then if one goes out, they each will only see 3W.
I'm still not sure if I understand how to come up with the Hfe value for a given transistor in a given application, but I'll stare at datasheets until it makes sense.
The Hfe value for a transistor is specified in its datasheet. However, there is generally a range between its maximum and its minimum, as it generally changes depending on how much collector current (Ic) there is. For example, in the datasheet for the darlington that I posted the first line under DC Current gain. It says Ic = 5Adc Vce = 3Vdc and its minimum Hfe is 1000. That means, if you had 3vdc between its collector and emitter, and your load was pulling 5amps, the gain would be at least 1000. That means you could have 5mA on the base (input), and you would get 5A of output, if you had 6mA on the base (input), you'd have 6A of output available. NPN transistors use base current to turn 'on'. The more base current you have, the more they turn on (the more current is available at the output).
Another question, what does the output of the transistor look like? If we go with your example - a bunch of 3.5v LEDs parallel on that transistor, running from a 5V supply - will the output be a constant, steady 3.5v? Or will it be some waveform that averages out to 3.5v? As I learned about building buck or boost converters based on chips like the NCP3066, there always seemed to be a lot of focus on designing the output side so there would be low ripple, so constant spikes wouldn't kill the LEDs. If there will be a lot of ripple, can I design it out (caps on the output?)
The output of a transistor looks exactly like what the input on the base is, just current is multiplied by the Hfe value of the transistor. So if you have 1Khz of PWM @1mA going into the base of a transistor, and the gain is 1000, you'll see 1Khz of PWM @ 1A on the output. The output voltage will be whatever the voltage between collector and emitter is, so if your supply is 5V the output is 5V, just current limited. Your LED's 'drop' 3.5V, meaning if you measured voltage across them, it would measure 3.5V (this doesnt really affect the voltage output of the transistor). There will only be ripple on your output if there's ripple on the input of the base of the transistor.
As for 'spikes', since the voltage output of the arduino is 5V, and you will have a resistor between it and the base of the transistor, the only way you'd get ripple is if somehow the arduino output voltage has ripple (not likely) or the resistor or transistor is flakey (also not likely). Again, transistors 'turn on' with more base current, so given our voltage is fixed (via arduino), and our resistance is fixed (via base resistor), input current will be fix (voltage/resistance = current), thus output current will be fixed.
Another question - how stable is this solution? vs. temperature, variations in Vcc, etc.? What can I do to make it more stable?
Pretty stable. Temperature will affect things, as it affects almost all electronics. Unless you're wanting this to work less than -20C or more than 80C I wouldn't worry much about how it affects your components. Variations in Vcc wont really affect much either, since your LED's pretty much always drop 3.5V, and the output of the arduino will pretty much always be 5V, everything else is pretty stable. If you wanted to be really paranoid with your circuit, design everything to not work more than 70-80% (only drive your LEDs 70-80% of max output, get a transistor that you will only be within 70-80% of its max current, power supply is only at 70-80% of its max current, etc) Heatsinks may be a good idea, 3W LEDs probably get pretty hot, and a little heat sink on the transistor would be fine.