If I have an API and I am the one consuming it, should the front-end be a separate project? I'm using Visual Studio ASP.NET Core 1.x.
An API is an interface first and foremost (and what the "I" in "API" stands for).
In general, it makes sense to have an interface be a separate component to decouple it from the implementation underneath. This also makes it easy to share: you can provide a lean library with only the interface specification, making it easier to use and understand. At runtime, the implementation can be dynamically loaded.
Another benefit is if the implementation is not closely coupled at the module level, it is possible to swap in an alternate implementation. This could be a "mock" and could be useful if, for example, the underlying "real" implementation touches databases or other persistence (or remote) systems that you do not want to mess with during testing.
Do you need to keep the interface separate? No. Is it a good thing? Yes.