You shoud distinguish between probability mass and probability density.
A discrete random variable is like a set of little stones: each stone has its own mass (weight). For example, if you toss a regular coin the mass of the "head-stone" is 1/2. The probability "density" function of a discrete variable is actually a probability mass function.
A continuous random variable is like a heap of dust. You may think that a single speck of dust has no mass, but you can calculate the mass of a fistful of dust if you know its volume and its density: its mass is $volume\times density$.
dnorm(0)
is just the density of a (standard) normal variable. When the volume is zero, i.e. when $Z=0$, the probability mass is zero just because in $volume\times density$ the first factor is zero. As soon as the volume increases, as soon as you look for the probability mass of a range of values (a fistful of dust, i.e. an interval), you can compute a probability mass. For example:
$$\begin{align}P(-0.1<Z<0.1)&=P(Z\in(-0.1,0.1))\\ &=\mathtt{pnorm(0.1)-pnorm(-0.1)}=0.07965567\end{align}$$
Each single value (each speck of dust) has a density, but only intervals like $(-0.1,0.1)$ (fistfuls of dust) have a "mass". So you can compute the probability mass of intervals, not of single values. But the probability density of single values does exist and make sense.
The density of a uniform random variable is constant, the density of a normal variable is not. However you can approximate the mass of small intervals. For example:
> pnorm(0.1)-pnorm(-0.1)
[1] 0.07965567
> density_at0 <- dnorm(0)
> volume_around0 <- (0.1) - (-0.1)
> volume_around0 * density_at0
[1] 0.07978846