The issue here is that the form of y[x] in the definition of soln2 isn't in the right form to make the replacement. This variable has the definition:
soln2={{y[x]->(b+E^(-a x+Subscript[\[ConstantC], 1]))/a}}
When making the substitution into the equation, you first need to extract just the functional form for the solution rather than the entire rule. For example:
In[24]:= soln2[[1, 1, 2]]
Out[24]= (b + E^(-a x + C[1]))/a
This form can be substituted into the equation to verify it is true.
In[25]:= (y'[x] + a*y[x] == b) /. y -> Function[x, Evaluate[soln2[[1, 1, 2]]]]
Out[25]= True
For your second question. There isn't an easy way to automatically redefine the constant term in the exponential as another constant. If the equation was in a simpler form, you could use a replacement rule such as:
In[26]:= a*Exp[C[1]] /. Exp[C[1]] -> C[2]
Out[26]= a C[2]
However, since the -a*x term is also in the exponential, more complicated pattern matching that wouldn't be general for all situations would be required pick out just the Exp[C[1]] term. In these cases it's normally easier to just redefine the arbitrary constants manually.