Should binom.test to be used to test that the coins are fair in R? If not, what test should I use? 
Image above shows the question, I'm wondering whether I'm solving the question correctly.
binom.test(x = 4, n = 100, p = 0.5, conf.level = 0.98)

    Exact binomial test

data:  4 and 100
number of successes = 4, number of trials = 100, p-value < 2.2e-16
alternative hypothesis: true probability of success is not equal to 0.5
98 percent confidence interval:
 0.008323647 0.111704427
sample estimates:
probability of success 
                  0.04

 A: No - you need to test whether the observed data follow a binomial distribution using a Chi-square test.
For example, the probability of getting no heads from 4 tosses of a coin (or tossing four coins) if the coins are fair is:
dbinom(0, 4, 0.5)
# [1] 0.0625

Do this for the other possibilities (1, 2, 3, and 4 heads).
Now use the chi-square test to test your hypothesis and supply the probabilities:
    chisq.test(c(5,23,39,19,14), p=dbinom(0:4, 4, 0.5))
    Chi-squared test for given probabilities

data:  obs
X-squared = 11.52, df = 4, p-value = 0.0213

So the coins are fair, but only just at the 2% level of significance. However, the number of times 4 heads appears (14) is more than expected (6.25). 
A: The answers by @JTH and @Edward propose different solutions, a binomial test of the null $p=0.5$ or a chi-squared test of the null of a binomial distribution with $p=0.5$. These hypothesis are not equal, the later implies the former. But $p=0.5$ could equally be satisfied with four coins with unequal probabilities but $\bar{p}=0.5$. That could for example be a betabinomial distribution. So if it is important to reject if the $p$'s are unequal bet "fair on average", the chi-square test would be best, but if it enough to test the null of "fair on average", I would expect the binomial test to have higher power, since it does not spend power on some of the alternatives that the chi-square test must consider.
So let us do some simulations to see if that is correct. We use R and for the tests, the functions chisq.test and binom.test.  First, let us look at the quality of the chisquared approximate distribution under the null hypothesis: (All simulations based on 50000 replications)

Shown is histograms on the natural and log scale, with the theoretical density superposed. The approximation seems good, except maybe in the extreme right tail.
Then we look at histograms of the p-values, for both tests. Ideally, under the null they should be uniform, but here we have some discreteness:

For the binomial test (binom.test) the discreetness is quite pronounced.  Then we look at p-value distributions under an alternative quite close to the null, $p=0.55$. For alternatives much farther from the null, the power is essentially 1.

It looks like for the binomial test, the p-value distribution tends to be stochastically smaller than for the chi-square test, indicating that it tends to reject more often, so has higher power. Indeed, for the traditional $0.05$ level we get powers of
chi-square test  binomial test 
   0.32156        0.47896 

confirming that.
Finally, let us see at a qqplot of the two p-value distributions to see more rigorously if we have stochastic domination:

We see that, except at the very upper end, the p-values from the binomial test are systematically smaller than the p-values from the chi-square test,confirming that the former will have higher power at all reasonable levels.
A: I have a different way of looking at the problem. I think you can use binom.test here, but you have not invoked the command correctly. You should use x = 214 (the number of heads observed in the experiment) and n = 400 (four coins tossed 100 times)
I get
> binom.test(214, 400)$p.value
[1] 0.1769419

So, no reason to reject.
