Take the time to read the openly published documentation which has tons of information. More information than can be pasted into this post...
1) if i remove async keyword from the function SimulateJob() then function will be treated as synchronous calling function ?
The async keyword defines a method as asynchronous. Whether the method contains asynchronous logic or not depends on the method body. Your example method,
SimulateJob(), does not contain asynchronous logic. So there is no reason to defined the method as async.
2) a asynchronous function has to have async keyword at the top of function declaration ?
Yes. A method must be defined as asynchronous to be an asynchronous method. Just like an integer must be declared as "int" to be an integer.
3) is it mandatory to use async keyword if i need to call a function asynchronously ?
I think you misunderstand what asynchronous means which makes answering this question difficult.
The straightforward answer is Yes. Asynchronous methods should be defined with the async keyword if you made a conscious decision to implement the C# async/await pattern (TAP). There are different ways to await multiple tasks, which is covered in the docs, if that's what you are asking.
Keep in mind, async/await is the latest asynchronous programming pattern in C#. There are pervious asynchronous patterns in C# dating back to the early 2000s. Asynchronous is not a new coding concept but TAP newest C# pattern. Learn the pattern if you intend to implement the pattern.
4) How many ways i can call a function asynchronously using Task & Await keyword?
I'm not sure I understand this question. If you defined a method as async and the method invokes async logic then you should use await the async method. Otherwise, the main thread will keep running and the code can/will miss the expected result of the async method. Maybe you are confusing async/await with creating a new thread???
Read the linked docs, it will clear up your confusion.