The accessibility keywords have the same meaning for constructors as they have for regular methods and member variables. So, a protected constructor can be accessed only by subclasses or by classes in the same package.
Sometimes you might want to make a constructor protected to make sure that it can be called only from subclasses, so that the class itself can't be instantiated directly. Often this is appropriate for abstract classes. The fact that the class is abstract already prevents you from instantiating it directly, but making the constructors protected emphasizes this, so that it's more clear for programmers who are going to use your class later.
The default accessibility of a constructor is exactly the same as the default accessibility of regular methods and member variables: if you don't specify public, protected or private, the constructor is only visible in the class itself and in classes in the same package.