Why more features are better than one We have an input composed of several features. Why is it better to use many of them in a Machine Learning algorithm, instead of using only the better discriminant one?
And in which way many features are combined in order to produce a good model?
 A: This is not true in general.
Imagine that there’s a causal relationship between two events. In such a case, knowing that the cause has happened would be enough to predict the effect. A single feature would be enough.
Now imagine the opposite case, where you’re trying to predict a completely random, independent of everything, event. No matter how many features do you have, you wouldn’t be able to predict it. With more features you could only be more prone to overfit to the training data, gaining a false sense that you’re able to predict something.
Let's consider one more scenario, where you’re making weather forecasts. Having one data from a single weather station wouldn’t let you build a precise model. On another hand, having data from multiple weather stations gives you much more precise information on the weather conditions, helping you to build a much better water model.
You need accurate data, not a lot of data.
A: In general, you should add features carefully and try to add features which are not correlated with each other. Without given data, no one can predict if the model will be really good on just one feature. We definitely don't want to overfit but that doesn't mean we underfit and don't use the features which provide us discriminatory information. 
What do you mean by "And in which way many features are combined in order to produce a good model ?" 
Are you asking a feature selection method?
A: (I’m on mobile for a while and can’t format code as well as I would like or post pictures. I’ll fix it at some point, but I wanted to post an answer.)
Let’s do a really extreme example where neither of the two variables give much predictive ability, but the combination does.
library(ggplot2)
set.seed(2021)
N <- 1000
x0_class0 <- rnorm(N, -3, 1)
x1_class0 <- rnorm(N, 3, 1)
x0_class1 <- rnorm(N, 3, 1) 
x1_class1 <- rnorm(N, -3, 1) 

d0 <- data.frame(x0 = x0_class0, x1 = x1_class0, y = 0)
d1 <- data.frame(x0 = x0_class1, x1 = x1_class1, y = 1)
d <- rbind(d0, d1)

Look at the plots of the two marginal predictor variables. Given an x0 or x1 value, can you predict the color?
ggplot(d, aes(x = x0, fill = y)) +
    geom_density(alpha = 0.3) +
    theme_bw()

ggplot(d, aes(x = x1, fill = y)) +
    geom_density(alpha = 0.3) +
    theme_bw()

By construction, each color has the same distribution for x0 and x1. If you know that x0 = 3, you have no idea what color the point is, and if you know that x1 = -3, you have no idea what color the point is.
However, let’s look at both predictors simultaneously.
ggplot(d, aes(x = x0, y = x1, col = y)) +
    geom_point() + 
    theme_bw()

It’s easy to see how the colors are separated in two dimensions! If the features are (x0, x1) = (3, -3), you can be pretty much certain about the color.
