It can be complicated for some people to tell the difference between both roles as these days there is quite a bit of crossover. However there are quite a few areas that are defining when it comes to seeing the differences between both job titles.
These days it is quite common for Full-Stack Developers to be polyglots which essentially means that they know multiple scripting languages and can adapt for various responsibilities. This can include working on a web, mobile or even a native technical stack. Knowing how to deploy your code and having some experience of Dev Ops is also a requirement. As creating an app that works the same way in different environments is good for production which is why Docker and Kubernetes are great tools to know.
Software Engineers are more focused on creating native apps for desktop, mobile and even other platforms like consoles, set top boxes and TV's. The role is more system based compared to that of a Full Stack Developer who would usually be working with the web. These engineers are specialists in their field of work and typically use programming languages such as C#, Kotlin, Java, Swift and other general-purpose programming languages like C++. In terms of work they are used to building applications that can run on an operating system like Windows, macOS and Linux.
In these types of roles Software Engineers tend to work on various aspects of the application that they are tasked with working on. Whereas in contrast a Full Stack Developer might be working on all areas of the app and it might not be a requirement to be as team focused although this depends on the role. Because of the technicalities of working with different operating systems Software Engineers have a good grasp of system architecture and the notions of Computer Science when applied to this area.
Both of these career fields are highly sought after so whichever path you choose you are going to find job opportunities. The role of a Full Stack Developer is one who develops applications that can be accessed anywhere on the internet. This means every website that you visit and all of the data that is stored on it. In contrast a Software Engineer creates applications that get installed in an operating system. Like Microsoft Office, Adobe CC, Visual Studio Code or any app that you have on your computer. The same can be said for any app that you have installed from an app store because it was likely that it was created using Kotlin/Java if its Android or Swift if its for iOS.