perl -e '$_="aaaa"; print "Match: $1\n" if /(?:(a)\1)/;'
prints 'Match: a'
because you asked perl to grab letter 'a' and then another 'a' after this.
perl -e '$_="aaaa"; print "Match: $1\n" if /((?:a)\1)/;'
prints nothing because at the point of \1 there must be already captured group, which isn't a case, because \1 is prefixed by non-capturing parens.
As for absence of warning in ((?:a)\1) - maybe regexp engine only issues warning at compile time if there're no grouping parens in re at all. (maybe it just doesn't perform complicated compile-time checking of regexp to see if grouping parens really come before \1).