Мне самому интересна эта тема.
А правильно ли я понимаю что есть текстовые файлы (.js .txt ) и бинарные где только нули и единицы. И других видов файлов нет?
Все файлы бинарные. Расширение только помогает программам определять их тип.
Некоторые форматы, например, некоторые картинки, в начале имеют информацию о формате, об версии формата и т.д. Но это не универсально, это делается конкретными типами для прикладных программ, чтобы они знали, как с ними работать (условно пнг с прозрачностью и без)