MSSQL and mysql в чем отличие?
Но это такое убожество что я толком ничерта не понимаю
Не надо путать причину и следствие. Причина - это что ты ни хрена не понимаешь. А следствие - оно тебе кажется убожеством. offtopВ скобках отмечу, что если ты не только ни хрена не понимаешь, но и жалуешься на это, и считаешь это достаточным обоснованием того, чтобы назвать убожеством - то ты и не хочешь понимать, и не пытаешься понять. В смысле не пытаешься по-настоящему, прочтение пары страниц из мануала под этот термин не проходит.

отличаются ли запросы sql MSSQL от Mysql
Да. Точнее, самые простейшие базовые запросы могут выглядеть одинаково. Но не более, чуть только хоть какая-то сложность, и одинаковость заканчивается. Синтаксис различается, и весьма сильно. А кое-где даже подходы к решению задачи различаются, и код с одной СУБД на другую не адаптируется совсем - только полное переписывание.

возможно ли сменить БД без нарушения функциональности софта.
Если запросы хардкодом - крайне маловероятно. Если тексты запросов - ресурс, вероятность несколько выше. Если вся лигика находится на сервере, общение с ним выполняется исключительно обращением к представлениям и вызовом процедур, а само приложение является чистым интерфейсом - скорее всего возможно.
Не удалось выполнить действие "Создать" для следующего объекта: "Пользователь", "sa".
---
И чем вас это обеспокоило? Пользователь  sa уже создан, ошибка в данном случае вполне может быть проигнорирована.
---
Есть наверное различные  пакеты для трансляции MSSQL Server -> MySQL. запрос в Яндексе "migration from sql server to my sql" третьей линией привел сюда.
По опыту, на поверхности, многое действительно поддается трансляции, но процедуры и функции, нет.
Но чуть от поверхности, MySQL уступает в плане отладки и выявления ошибок. А проблемы с правами пользователей  мало отличаются. Попытка создать пользователя, который уже есть приведет к той же ошибке и в MySQL. 
Есть конечно возможности отладить код создающий объекты, применяя "IF NOT EXIST" выражение. Профессионалы  используют два подхода для кода создающего объекты.
Подход №1 - фирменный подход специалистов, проверять существование объекта, прежде чем его создать.
Людям свойственно это делать, чтобы обеспечить наименьшие трения с чтением и пониманием ошибок. В этом случае детальное чтение ошибок необходимо для выявления дефектов.
Такой код удобен тем, что его можно повторять снова и снова,  результат будет всегда один и тот же, а ошибки будут выданы только в случае дефекта, или записи будут чистыми.
Подход №2 - обычно используют создатели по, которое пишет скрипт "создать такой-то объект", с оглядкой на профессионального пользователя, который ( как считают создатели по ) достаточно знаком и с синтаксисом, и с важностью тех или иных сообщений, и сможет прочитать "с листа" записи машины, и справиться с выдачей решения "все хорошо"  или "что-то сломалось" благодаря накопленным знаниям.
У меня сложилось впечатление, что Вы работаете с кодом, созданным в подходе №2.  Возможно если Вы прибавите детали, и опишете что Вы делаете, отвечающим на вопрос будет проще справиться с ответом.
Всего хорошего