The TLS 1.3 handshake works as follows:
The client will send a "ClientHello" data structure to the server. At this stage, the client does not yet know which "Groups" the server supports. To avoid an extra round-trip to the server, it can speculatively contain a "group element" for the group it would prefer to use. In the case asked about, the group element is a 32-byte public key for use with "Group 29" (29 == hex 0x1d), which is a TLS identifier for what is commonly known as X25519. A list of the numbering for all TLS supported groups is here: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml
X25519 means a Diffie-Hellman exchange using a well-known base point G on the Curve25519 elliptic curve, where group elements are in the large cyclic subgroup containing G within this curve. The point G does not have to be transmitted, because it's defined as part of the X25519 standard and is the same for all invocations of X25519.
The client's ephemeral public key is the "group element" which was speculatively sent. For X25519, it is 32 bytes long (64 hex characters, or 256 bits). This group element is listed as the "key exchange" value in the "key share" section of the ClientHello data structure.
The server will respond with a "ServerHello" message if it agrees to use the client's speculatively-included group, here Group 29. This includes the server's group element in the "key exchange" value in the "key share" section. This group element is the server's ephemeral public key.
With this information, both the client and server will be able to each calculate the same shared secret called the "pre-master secret". This is then combined with the ClientHello and ServerHello data to derive symmetric encryption keys (see https://datatracker.ietf.org/doc/html/rfc8446#section-7.1). These allow the server and client to securely communicate with one another using authenticated encryption such as AES-GCM.
If the server doesn't agree to the client's proposed group, or the client opted not to propose any group, but the server does agree to an(other) group the client listed in "supported groups", it instead sends HelloRetryRequest which tells the client to retry the ClientHello using a specified group, which the server then accepts as above. If the server doesn't agree to any group the client supports, it sends an error alert and the handshake fails -- unless the client also proposed an available PSK, but usually that only happens for resumption, and if the initial handshake fails resumption is not possible.
TLS 1.0-1.2 handle ECDHE differently -- if at all, because there it is optional. In those protocols the ciphersuite specifies key-exchange and authentication as well as the data cipher and hash for HMAC (if not AEAD) and PRF (if 1.2). The client sends ClientHello listing ciphersuites it supports, any, some, or all of which may use ECDHE in combination with either RSA or ECDSA authentication (i.e. certificate), and a supported-groups extension (or supported-curves before RFC7919) specifying the curves it supports. If the server agrees to an offered ECDHE ciphersuite and an offered curve, it sends ServerHello specifying the ciphersuite, then its certificate chain, then ServerKeyExchange containing the curve id and its ephemeral public key. The client (if it accepts the certificate) sends ClientKeyExchange containing its ephemeral public key, after which the shared-secret computation proceeds similarly, although the details of how the working keys are derived differ from 1.3 and also between 1.2 and earlier.