Why is an embedding of dimension 400 enough to represent 70000 words?
The specific term you are looking for is &quot;word embedding&quot; and not just &quot;embedding&quot;.
How to numerically represent textual data?
Neural networks (typically) require as inputs (and produce as outputs) numerical data (i.e. numbers, vectors, matrices, or higher-dimensional arrays). So, when processing textual data, we first need to encode (or convert) the text into a numerical representation. There are different ways to do it, such as

one-hot encoding (in that case, if you have 70000 words, you would have sparse vectors with 70000 entries where only one of those entries is equal to $1$ and all other entries are $0$: see this article  for more info)

map each word to a number (in this case, you would have 70000 numbers, one for each word)

word embeddings


Each of these representations has different benefits and drawbacks. For instance, if you map each word to a number, then you just need to keep track of $70000$ numbers. In the case of one-hot encoding or word embeddings, you will need more memory. However, nowadays, word embeddings are widely used in natural language processing/understanding/generation tasks (and given that your question is about word embeddings), so let me briefly describe them.
Word embeddings
There are different word embedding techniques (such as word2vec). However, they are all based on the same ideas

Words that are similar (or related) in meaning should be mapped to vectors (i.e. the &quot;word embeddings&quot;) that are also similar in some sense (for instance, their cosine similarity should be high). For instance, the words &quot;man&quot; and &quot;boy&quot; should be mapped to vectors that are similar.

These word embeddings are learned (rather than hard-coded or manually specified) given the data

The size of the word embeddings is a hyper-parameter (this should answer your question!)


Hyper-parameters
To answer your question(s) more directly, the choice of the dimension of the embeddings or the number of &quot;hidden features&quot; (which are both hyper-parameters) was probably more or less arbitrary or based on the instructor's experience. In general, it is difficult to determine the optimal choice of any hyper-parameter. Sometimes you can just use numbers that other people have used in the past and have noticed that work &quot;well enough&quot;. If you really want to find more appropriate values of the hyper-parameters, you could use some hyper-parameter optimization technique, such as Bayesian optimization or a simple grid search.
Further reading
You can find many resources online that explain the concept of &quot;word embeddings&quot; more in detail. For instance

What Are Word Embeddings for Text? (by Jason Brownlee)
Word embeddings (A TensorFlow article/tutorial on word embeddings).