Почему постоянный член c const может быть назначен с помощью const_cast, и когда это будет полезно?
Зависит от того, что вы подразумеваете под словом "can".
Программа правильно сформирована, потому что вы изменяете неконстантное значение l.
Поведение программы не определено, потому что вы изменяете объект const.
и когда это будет полезно?
Изменение объекта const никогда не может быть полезным.
Удаление const из ссылки иногда, хотя и редко, полезно, поэтому существует const_cast. Но это полезно только тогда, когда у вас есть константная ссылка на неконстантный объект.
Каковы плюсы ... конструктора B?
Нет.
Каковы ... минусы конструктора B?
Поведение программы не определено, если вызывается конструктор B.