A concrete class has no pure virtual functions. You can create objects of it. An abstract class has at least one pure virtual function and cannot be instantiated. If Use abstract classes for high-level interfaces and concrete classes for actual objects you create.
Understanding this concept deeply will help you write better code. Practice with examples until the pattern becomes automatic. Review earlier sections if anything is unclear. Building on solid foundations makes advanced topics easier.