Technically, age is the difference. But in practice people very often refer to dogs of any age (as an affectionate affectation) as "pup" or "puppy". This is done in a similar spirit to the way parents often refer to their children (even grown-up ones) as "my baby".