Difference between the two regular expression
Your regular expression (a+ba*b)* won't match the string a which contains zero b's, an even number.  It also won't match the strings bb or bbbb, because the expression requires one or more a's before any occurring b's and requires at least one a between any two pairs of b's.

The regular expression a*(ba*ba*)* is the correct solution.  It allows any number of leading a's and then demands that there if there are b's present there be at least two b's among the remaining a's.  Thereafter b's are matched in groups of two among the a's and matching will fail if a b occurs outside such a pair.

The regular expression a*(ba*b)* is wrong because it won't match strings with a's between pairs of b's, such as the string bbaabb.