Textual data means data can be read ofcourse every thing stored on computers are as bits, each character in the text is encoded by standard globally accepted encoding/decoding mechanism for example utf-8, ascii etc. This encoding/decoding mechanisms assigns each character(symbols) a unique code point which is represented by a byte or group of byte, however the same mechanism is used to decode the bytes to symbols(characters) by browser when we read it.
Binary data means data is represented in group of bytes but this bytes is defined by the protocol custom encoding/decoding mechanism based on certain rule or schema
for example json message format is textual but protobuf message format is binary, since json is textual any program can serialize their object into string, it does not have a defined schema or rules however probuf schema is need to be present in both client and server so that data can be encoded and decoded.
protobuf example -> schema -> message employee { int32 age=1 , int32 salary=2}, here schema says that employee first field which it 32 bit integer has age and second field which is also 32 bit is salary.
http2 is a binary protocol since it introduces a binary framing at layer 7 between the socket interface and above http apis. this binary framing has come with certain schema (how the fields are arranged) using which plain text is converted to binary data (called frames in http2 terminology). both sender and reciever must support http2 i.e they must binary framing schema so that data can be encoded and decoded much faster than a unstructed data. This is the reason http1.1 client can not make a call to http2 server.
In http1.1 data is plain text that needed to read one character at a time to make any sense till the new line \n also complete data is passed as one unit to lower layers where it is segmented.