Спецификации (http://www.exif.org/Exif2-2.PDF) говорят, что - да - APP1 должен идти первым, сразу после SOI (ffd8), но иногда APP0 (JFIF) идет первым, прямо перед APP1. Это нельзя рассматривать как правильное использование, так как обе спецификации - JFIF и EXIF указывают, что соответствующие маркеры должны следовать сразу за SOI. Но на практике оказывается, что такие случаи случаются довольно часто, и графические редакторы и просмотрщики правильно интерпретируют такие «неправильные» гибридные файлы.
Существует два распространенных типа файлов JPEG: JPEG/JFIF и JPEG/Exif.
Обе спецификации (JFIF и Exif) требуют, чтобы соответствующий заголовок отображался непосредственно после маркера SOI (Начало изображения).
В случае JFIF это маркер APP0, в случае Exif — маркер APP1.
Возможно иметь файл JPEG/JFIF с блоком Exif где-то позже в файле. Я заметил, что это происходит при экспорте файла JPEG/Exif из iPhoto. iPhoto в конечном итоге преобразует его в файл JPEG/JFIF, но сохраняет метаданные Exif где-то позже в файле.
Однако помимо требования, чтобы заголовок для соответствующего формата файла был первым, нет никаких ограничений на порядок других блоков маркеров APP# в файле. Поэтому блок Exif может располагаться в произвольном месте файла JPEG/JFIF.