A "byte", as defined by the C and C++ standard, is the accessible unit of memory, and exactly large enough to hold one char, signed char, or unsigned char. It must be at least 8 bits, but can be larger.
A "byte" that is exactly 8 bits in size is also called an "octet". Octets are always 8 bit, bytes are not.
Ascii-codes from 128 to 255 don't exist. ASCII only has code points from 0 to 127. Unicode code points range from 0 to 0x10ffff. Unicode code points from 0 to 127 have a one-to-one mapping to ASCII-codes. Unicode code points from 0x80 to 0x7ff use two bytes in UTF-8 encoding; code points from 0x800 to 0xffff use three bytes, and code points from 0x10000 to 0x10ffff use four bytes.
UTF-8 is an encoding of code points, other encodings are UTF-16LE and UTF-16BE, and UTF-32LE and UTF-32BE. An encoding has different properties from the unencoded values. There are many other encodings for subsets of Unicode, but they are falling out of fashion.