If i want to write an app that supports all casting mediums mentioned in the title of this question, do i need to implement all the sdk's separately or do any of the sdk's have a way to wrap the functionality of the other ones?
Each SDK is specifically for that protocol / product. Vizio, Chromecast, and Android TV all support Google Cast so you can use one SDK for that.
One Cast works, you can use this guide to learn how to also support Samsung Smart View.