new Thread vs StartCoroutine

Is new Thread(functionName); basically the same as StartCoroutine(functionName) ?

No, coroutines aren’t threads; by default all code in Unity runs in the same thread.

What happens with a coroutine is that it is run on the main thread every frame and executes until it does a yield - then it will suspend until the yield condition is met. That yield condition is tested every frame and when the condition is met the code in your coroutine resumes. A thread effectively runs at the same time as other code (this is only true when you have multiple cores). Unity cannot support accessing its API from anything apart from the main thread.