bool хранится в памяти в минимально адресуемой размерности - 1 байт. Физически, false хранится как 0, true хранится как 1. В принципе, любое число кроме 0, будет восприниматься как true.
Да, тип bool реализован как целочисленный тип, которому отводится один байт. При этом 0 интерпретируется как false, а любое другое значение как true. По умолчанию true возвращает 1.
да, bool хранит числа, но только 1 и 0. Если присвоить числа отличные от 0 и 1, то они будут сразу преобразованы к нужному диапазону(если число не равно 0, то переменная будет равна 1, если равно 0, то переменная равна 0)