For 1 you can add the scales = "free_x" argument to the facet_wrap.
For 2 you need to dodge the points and errorbars.
geom_point(aes(x = mean, y = StudyID, color = type),
position = position_dodge(width = 0.3)) +
geom_errorbarh(aes(xmin = mean - stdev,
xmax = mean + stdev,
y = StudyID, color = type),
position = position_dodge(width = 0.3),
height = 0.3) +
facet_wrap(vars(variable),
scales = "free_x")
