So Mongo, when you run it locally, needs you to start/stop it manually. You can start it with a flag that tells it to run as a background process on your computer, but yeah, you actually need to start it up and shut it down.
Advantages to running it locally Vs. hosted: you control it. Disadvantages: you control it. It’s easier to run it hosted, but it’s cheaper for you to run it and you don’t run the risk of the service going down, and you don’t need to be connected to the internet. For small projects, where you can use MLab’s free tier, it’s totally fine if you’re happy with always needing to be connected, it removes a lot of headaches. For anything else, cost will determine whether it’s useful. MLab are doing exactly the same thing as you would do locally, they’re just handling the pain-in-the-ass setup and deployment part - hosted services are great, particularly if your needs mean you can stay in the free tier (once you get past that, cost racks up pretty fast)
admin/admin is fine for development, where you want to access the DB easily, and there’s no issue with you dropping the DB, or corrupting it, or whatever: you want to quickly build/rebuild it, it’s not going to be hacked as it’s just a test, and you don’t want to have to remember a password, or store credentials or whatever. In production you don’t use those credentials because it’s extremely unsafe. But in reality, you’d do exactly the same thing, you’d just be lot more careful about what you pick as the credentials.
Mongoose is a mapper for Mongo (like anything that implements the ActiveRecord pattern or NHibernate or Entity are mappers for relational (SQL) databases). It lets you translate between objects in your code and the objects in your Mongo database, it’s an extra layer that lets you deal with Mongo directly in your chosen language. There are good and bad points about using an abstraction layer, but it isn’t really a cop out. The mapper is often easier to deal with than the the raw domain-specific language used to interact with the database. But it’s an abstraction, and abstractions are often problematic; it allows you to avoid dealing directly with Mongo, that may or may not be something you want. It has a performance cost, but that cost may be so small as to be irrelevant, or the convenience could trump the cost. Or on the other hand, you could have a simple app where it’s just as easy to write the raw queries. Some people will only ever use an object mapper, and never write actual queries. Some people will say that’s stupid, and you shouldn’t use object mappers, that the abstraction is fundamentally the wrong one. It’s context sensitive.
Pretty good overview article: “An Overview of MongoDB & Mongoose” https://medium.com/chingu/an-overview-of-mongodb-mongoose-b980858a8994
Hope that goes some way toward answering, they’re good questions anyway.