ASCII - is a 7-bit code for coding characters in computers and generally in all communication devices that use text. 7-bit (0x0000000 - 0x1111111) means it can represent 128 characters, from which some of them are not visible (control characters). PHP function ord() and chr() use as input and return values the ASCII codes/characters. Complete list with codes can be found here: http://www.columbia.edu/kermit/ascii.html
ISO-8859 - is a set of 8-bit single-byte coded character encoding schemes. 8-bit (0x00000000 - 0x11111111) means that each of the encodings from ISO-8859 can represent 255 characters, from which some of them are not visible (control characters). For backward comatibility first 128 characters have same codes as in ASCII. Rest of the codes are assign to language specific characters, depending on ISO-8859 part.
ISO-8859-2 - part 2 of ISO-8859 character encoding (also reffered as Latin-2). Created to be used with Central European languages like Bosnian, Polish, Croatian, Czech, Slovak, Slovene and some else. First 128 characters are same as ASCII codes.
Windows-1250 - is MS Windows 8-bit character encoding for Cetral European languages. It has many of the same characters as ISO-8895-2 but in a different arrangement, which leads to some confusions.
Unicode - is a standard for consistent representation and handling of text expressed in most of the world's writing systems (e-mails, files, websites). Despite graphical representation it handles related items, such as character properties, rules for normalization, decomposition, collation, rendering, and bidirectional display order (for the correct display of text containing both right-to-left scripts, such as Arabic or Hebrew, and left-to-right scripts).
UTF-8 - is a 8-bit variable-length character encoding for Unicode. This means that one character is represented by 1 to 4 bytes, so UTF-8 contains ways more characters than ISO-8895 and other local charsets. Unlike UTF-16 and UTF-32, UTF-8 is backward compatibile with ASCII (first 128 characters are the same) - this is one of the reasons UTF-8 got most popular from among unicode encodings.
Endianness - either little endian (Le) or big endian (Be) is the byte order in representing multi-byte chops of data (characters in our case). Big endian stands for order where most significant byte is the first one.
BOM - Byte Order Mark - in case two byte orders are possible, there must be something that indicates which one to use. This is where BOM comes in. It should appear at the start of the text stream. UTF-8 does not require BOM.