You are mixing up primary keys with secondary indexes. The cardinality vs. efficiency trade-off applies to secondary indexes but not the primary key. The primary key values are unique by definition and are also the most efficient means of finding and accessing a single row. Have a look at this summary about indexes in Cassandra.
There is absolutely no problem with using the user's email address as the primary key of a user table if that is what uniquely identifies your users and associates them with their detail information.
A dynamic column family is a "table" for which the number if columns is not fixed. You add information not only by adding rows but also by adding columns on the fly. E.g. to build a time series of events. A column family is always dynamic, though I think the CQL layer obscures the fact. Whether you treat it as such or as a fixed set of columns is up to you. To find some theoretical background look for the BigTable concept and how Cassandra implements it.