Have you already tried to use the ''Spatial Join''? (right-click on your layer, then join ''Join''. Instead of ''Join by attribute'', chose ''Spatial Join'')
This could allow you to add fields to your point layer, saying in which polygon they are contained.
You could do it on the point layer in order to obtain a new point layer containing the polygon's attributes in which the point is contained.
If you only need a count by polygon (how many points are contained inside a polygon), you could ''summarize'' (right-click on the layer, then Summarize) your data on the Polygon ID.
Or you could install the 'Hawth's Analysis Tools for ArcGIS' and use the function 'COUNT POINTS IN POLYGONS TOOL'.
If you need to count a specie only once by polygon, you would need to do something equivalent to a sql ''group by'' on your point layer. You could instead try to ''dissolve'' (toolbox) your point layer based on on polygon ID and speciesID. It could remove (not sure) the duplicate species in a polygon (select the multiparts option). Then you could 'Summarize''.