There seems to be a Smart UI SDK version for each released CS version, e.g. 16.0.x in Smart UI 16 folder, 16.2.x in Smart UI 16.2 folder. Is there any difference? How should we choose the right SDK version?
Smart UI is updated every quarter together with Content Server. Smart UI SDK includes sources of Smart UI too. That is why SDK updates are released every quarter too. However, other content like code examples and documentation may not change.
You should choose the SDK version as the minimum CS version, which you want to support. Smart UI interfaces are backwards compatible, but if you develop with a newer SDK version, you may introduce a dependency on a feature, which was not available in earlier versions.
If you "know what you are doing", you can use a newer version of the SDK for older CS version too. You would get up-to-date build tools with a newer SDK, but you would have to pay attention on your module dependencies.