My answer is about the use of laser diodes.
Using a laser to transmit optical information requires a little knowledge. The first bit of knowledge is the threshold current that is needed for the device to commence lasering. Below this current, the lasering is poor or zero and there is a time lag on returning to lasering when current rises again. This means your data can be interrupted. So, if you want a good system, stay above the lasering theshold. However, that threshold is temperature dependent: -
So where do you pitch the forward current to cover the likely (or possible) variations in temperature (bearing in mind the self heating of the device). What about this: -
If I choose a minimum current of 55 mA I can always produce laser light. See the blue line I've added to the picture above. But if the maximum output power is 10 mW, I can't modulate the light with a current greater than about 65 mA at 0 degC. This gives me a light output that varies between about 6 mW and 10 mW at 0 degC and between about 1 mW and 3 mW at 50 degC.
But you could go for more sophisticated approach. You could make the average laser current rise with temperature using a thermistor. So, at 0 degC the average current is about 52 mA and at 60 degC it's about 78 mA. This now positions the unmodulated light output at 5 mW across the range of temperatures.
This is important because now you can modulate the light output between 1 mW and 10 mW - this is called the extinction ratio (by the way) i.e. the ratio between lightest and darkest laser light output levels.
It's still a little tricky though because to get 1mW to 10 mW at 0 degC requires a change in current of about 25 mA whereas at 50 deg C you'll never quite get 10 mW even with 100 mA but you might get 1 mW to 9 mW with a change in current of 45 mA.
So the laser output gain reduces with temperature.
I'm labouring these two points (threshold and gain temperature sensitivity) because be under no illusion, to get a reliable free-space transmission system working across a gap of 20 metres requires every tweak possible to make it work successfully.
You'll need a small (but not parallel) "diversion angle" to make your system usable but, because of this, you will be receiving micro watts (at best) at 20 metres and you may be "in the noise" of your receiver.
Just think about that tiny little window in your photodiode (yes, use a photodiode for speed) - you might have an active area of 1 square mm. If your laser is illuminating a 20 m distant target with an area of of 100 mm x 100 mm you have spread your 5 mW average power thinly over 10,000 square mm and so your receiver window acquires just 500 nW and that's just on a good day!
Do not underestimate the difficulties and the head scratching. Do not under-estimate the length of time you might spend trying to understand the equivalent input noise of this or that photodiode. It can be done but it can also be very tricky. Choose a photodiode that is as big as you can but not so big that it is too slow for the data rate. If you can get 4 sq mm then you have quadrupled the receive power compared to 1 sq mm.
If you are going to use a lens (or you need a lens) mount it at the laser end and not the photodiode end. Mounting at the photodiode end is much less effective given that the lens can only receive and focus the power that hits the lens. Hence a small receiver lens is of moderate use compared to a lens at the laser used for focussing a slightly divergent beam.