After you set collection validator for property - you can forget about fact, that main model and (n - 1) submodels exists except submodel being currently validated. And there is no way to pass main model as a parameter in SetCollectionValidator.
So you have to use RuleForEach method instead of setting collection validator:
RuleForEach(x => x.SubEntities)
.Must((model, submodel) => IsValidFirst(submodel, model)) // your rules should go here to be applicable to each collection item
.WithMessage("The item with values {0}, {1} has duplicates in collection of {2} items",
(model, submodel) => submodel.Field1,
(model, submodel) => submodel.Field2,
(model, submodel) => model.SubEntities.Count); // for error message building you can access both model and submodel being validated
.Must((model, submodel) => IsValidSecond(submodel, model)) // yet another rule
.WithMessage("...")
.When(model =>
model.Type == SimpleEnum.SpecificType) // can access to main model only, but it is enough for your purposes
I guess that possibility to tell child validator about fact, that parent model could exists, should be implemented in future, but right now there is the only working approach, mentioned above.
UPDATE
You can create custom ModelBinder, that would set Parent property of each subentity to main entity value, and continue using SetCollectionValidator().