CoordinateReferenceSystem is the base Interface from which all other GeoTools SRS are derived from - it is the base class of Geocentric and Geographic projections (and others with vertical and temporal coordinates). It comes from the ISO19111 specification by way of the OGC GeoAPI project.
CoordinateSystem is also an interface that comes from ISO19111 and deals more with axis, datum and unit definition in the projection.
The fact we have two interfaces for this comes from Java not supporting multiple Inheritance while XSD does (I think, this was all written many years ago and the developer has since left the project).
In general you want to deal with
CoordinateReferenceSystems and in most cases the utility class
CRS is there to help you. A good place to look for more detail is the referencing chapter of the user guide.
For your final question - layers don't really have either but you can do
To get a
CoordinateReferenceSystem if you need to really know.