Потому что в nth-of-type указывается номер потомка относительно родителя.
Ваш селектор .two div[id]~div:nth-of-type(2)
читается как:
1. Найти элемент с классом .two
2. Внутри этого элемента найти div, имеющий атрибут id.
3. Среди следующих за этим div'ом сиблингов найти div, являющийся вторым потомком своего родителя.
Но такого div'а нет, поскольку div[id] сам является вторым потомком, а следующие за ним сиблинги - третий, четвёртый и т.д. потомки.
2n работает потому, что оно берёт четвёртого и шестого потомков, второй также не подходит под селектор.