My first question is can I add more than 1 service (asmx) files and
use them in single webservice project?
You can add multiple entry points to your webservice, such that calling different URLs will call different behaviors. You can do this by adding
[WebMethod]
In front of public methods inside your Service.cs file.
How can I publish them and use/call/consume them from different websites? (I know how to use them when they are in same project but different project is bit confusing)
You can generate code to interact with the webservice based on the WSDL file. I am not sure how you do this in .NET, but in Java there is a command line tool to generate class to interact with the SOAP service from another applications. This is, after all the entire point of web services.
How can I secure them to make them available by authenticated users/apps?
You probably want to manage this on the IIS side of things. While it is probably possible to some basic authentication to your web service but checking the username, it may be more efficient to handle this before you reach your web service.
You can also configure basic authentication using the Web.config file's authentication attribute.