[10] is a list literal. It creates a list with a single element, and that element is 10.
bytes() behaves in several different ways depending on the argument, as you can see from its help() documentation:
class bytes(object)
| bytes(iterable_of_ints) -> bytes
| bytes(string, encoding[, errors]) -> bytes
| bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer
| bytes(int) -> bytes object of size given by the parameter initialized with null bytes
| bytes() -> empty bytes object
|
| Construct an immutable array of bytes from:
| - an iterable yielding integers in range(256)
| - a text string encoded using the specified encoding
| - any object implementing the buffer API.
| - an integer
In this case, [10] is used to invoke the bytes(iterable_of_ints) behavior rather than the bytes(int) behavior, despite only representing one byte.