Is there a difference between a bounded normal and truncated normal?

I think they should be roughly the same. Note that the pm.Bound() functionality has changed in v4:

norm = pm.Normal.dist(mu=1.0, sigma=3.0)
x = pm.Bound('x', norm, lower=0.0)