Firstly, if you want to use this for data collection with QField, then I don't think solutions using the 'Value Relation' edit widget will work, because at present (Dec 2018) the value relation widget type does not seem to be supported in QField.
However, according to the QField documentation, the 'Value Map' edit widget is supported:
So I recommend to use the value map edit widget in your layer properties. I have tested the project settings in both QGIS 2.18 and 3.4, and theoretically, this should work when you export your project to QField (I have not tested that part though).
I created a spreadsheet like below and saved as a csv.
I loaded the csv via Add Delimited Text Layer, and specified 'No Geometry'. I also have a point vector layer called 'Field_data'. This layer has a field called 'Taxon name' which I want to edit with a drop down list of multiple species. I open the layer properties dialog for this layer and change the edit widget for the 'Taxon name' field from Text Edit to Value Map. The layer properties dialogs are slightly different for 3.4 and 2.18 (see images below).
QGIS 3.4 Layer Properties dialog- Attributes Form tab:
QGIS 2.18 Layer Properties dialog- Fields tab:
Next, I click 'Load Data from Layer' and select the Species_list csv as the layer and select the 'value' and 'description' columns from the csv layer.
Now when I add a new feature to my Field_data layer, the values for the 'Taxon name' field come from a combo box populated with the species names from my csv file.
On saving the newly created feature, the taxon name values are written back to the attribute table.