למי שתוהה, תו ה-BOM (ובשמה המלא BYTE ORDER MARK) נועד במקור לציין את סדר הבתים שהקובץ משתמש בו כדי להציג מספרים בני 16 או 32 ביטים.
בקידודים UTF-16 ו-UTF-32 אבני הבסיס הם מספרים בני 16 ו-32 ביטים לכן התו הזה נחוץ (בהעדר מידע מבחוץ) בשביל לזהות את סדר הבתים בו הקובץ משתמש.
בנוסף, התו שימושי כדי להבחין בין UTF-16 ל-UTF-32 כי ה-BOM מיוצג בצורה שונה בשני הקידודים
בקידוד UTF-8, אבן הבסיס הוא מספר בן 8 ביטים, שכל המעבדים מייצגים בצורה זהה, לכן אין צורך ב-BOM עבור זיהוי סדר הבתים, (וגם אפשר בקלות לזהות אם קובץ הוא UTF-8 תקין בלי צורך להשתמש ב-BOM), אבל זה יכול להשתמש כסוג של רמז שמדובר (בסבירות גבוה) בקובץ יוניקוד ולא ascii או ansi או משהו אחר
מייקרוסופט אימצו לעצמם נוהג שלפיה כל קובץ בלי BOM מזוהה כ-ANSI, ועם BOM זה מזוהה כיוניקוד
לפעמים כשאין צורך ב-BOM זה יכול גם להזיק אם התוכנה מצפה לקבל ASCII ובלי ה-BOM בטקסט פשוט הרי UTF-8 הוא גם ASCII תקין, וה-BOM מקלקל
במקרה של קובץ CSV עבור אקסל שכולל בתוכו תווים מחוץ לטווח ה-ASCII ה-BOM רק עוזר
הנ"ל מה שהבנתי מתוך הכתבה בויקיפדיה ש@dovid ציין, ומתוך ה-FAQ הזה באתר הבית של תקן יוניקוד