if you put a range (even an open one) it will be kept; otherwise, a
range is generated, the default is

compatible : The version will match major only.
1.2.3.abc -> [1.0.0,2.0.0)

personally, in my Xtext projects, I use in my MANIFESTS an explicit
minimal version range for things not related to Xtext, e.g., for Eclipse
Platform bundles, I use 3.5.0 so that my features can be installed in
older Eclipse versions. For Xtext bundles I leave the version range
empty, and I let site.p2 generate the versions for me using these custom
properties

# for versions not specified in the MANIFEST use
# [current-version unqualified,match major and minor)
# for instance, if you're using xtext 2.3.1.xxx and do not
# specify any range then the generated range will be
# [2.3.1,2.4.0)
pde.match.rule.bundle.lower=unqualified
pde.match.rule.bundle=equivalent

I don't know whether it is good practice, but it keeps me safe from new
releases of Xtext. When users install my stuff they will not get
versions of Xtext more recent (w.r.t. "minor") than the ones my projects
have been built (and tested) against.