I am new to Office 365 API. We have a requirement of developing a Web API, that will access office 365 APIs for accessing calendar information, send emails etc. I have an Azure account with Administrative access. I also have a Office 365 tenant with a system account. I have the following queries:

1) I am using Visual Studio 2017. What packages do I need to install for accessing office 365 API.

2) Besides registering the Web API in Azure Active Directory what else I need to do. I read in a web site that I need to register Office 365 tenant in Azure AD as well. Is this necessary?

3) I am already authenticating the user through ADAL.js. Can I use the same token to authenticate to Office 365 API?

4) I read from the internet that Microsoft Graph should be preferred over O365 API. Is there any big change in the approach with Microsoft Graph?