How is the TelnetClient example different from the WebClient example?
There are two differences:
Firstly, you need to connect to the right TCP port on the server. A server could be accepting connections for HTTP, FTP, telnet and so on at the same time, each service provided on a different TCP port. You need to know what port to connect to for the service you want. There are some standard conventions for the ports used by common services, for example telnet is typically on port 23 and HTTP is typically on port 80. You'll see that the telnet and web client examples connect to different TCP ports, and that's why.
Secondly you need to send and receive messages over the connected socket using the appropriate protocol. Telnet and HTTP both happen to be text-based protocols, meaning that the messages consist of printable text that could be entered via a keyboard or displayed on a screen. You'll notice that in the examples you mention, the Arduino doesn't process the messages itself but just passes through anything received from the network to the serial monitor, and vice versa. So the message processing is done by a person reading and typing messages in the serial monitor. You need to enter messages using the correct format for the service you connected to. For example, when you connect to an HTTP service you need to type in a valid HTTP request. Telnet is slightly easier to use in that the telnet protocol just provides a transparent connection between the client (i.e. your Arduino) and a shell processor on the Telnet server, so the commands you need to enter over a Telnet connection are the same ones you would enter to the command shell if you were connected locally.