The actual language you came up with is not correct! You can immediately see it from the $a,b$ loop between states 1 and 2, which suggests that any word in the form $ (ab)^* $ works for some appropriate prefix and suffix, whereas $b^*a^*b^*$ can only produce a finite number of $ab$ repetitions.
Instead, the actual language is:
- Any number of $0$ or more $b$, which keep you on state $1$, followed by
- Exactly $1$ $a$, which moves you to state $2$, followed by
- Any number of $0$ or more $b^*a$, which take you back to state $1$, and again to state $2$, followed by
- Exactly $1$ $a$, which moves you to state $3$, followed by
- Any string, which will leave you on state $3$.
So, $\left(b^*a\right)~\left((b^*)a\right)^*~a~(a|b)^*$. Can you find a right and a left linear grammar for that? You can work from the language and, try first to see how you can produce $(b^*a)$, and $\left(b^*a\right)~\left((b^*)a\right)^*$...
Or, you can notice from the automaton that two consecutive $a$ are necessary and sufficient to move you from state $1$ to state $3$; you can have anything before or after that pair of $a$ and still accept. This suggests an alternative expression for the language, $(a|b)^*aa(a|b)^*$, that's easier to turn into a grammar!