1) Do I need to create individual wallet for each user or just one wallet with multiple accounts ?
One wallet with multiple accounts. You don't need to do this if you plan to do withdrawals manually, if you want automatic withdrawals then use the accounts feature.
2) Will I need to setup a daemon or using just API will suffice my requirements ? Do I need VPS or not ?
API? Which API are you referring to? Is it a third-party service?
If you want to run bitcoin-core daemon you'll probably need a low-end dedicated server. Currently the blockchain is over 20GB and syncing uses up lots of CPU time and IO.
You may be able to run the daemon on some VPS's, but many will kick you off (I was kicked off by my provider recently) and the blockchain is only going to keep growing so eventually your provider will probably kick you off as bitcoin-core will keep getting more resource intensive as the blockchain grows.
The easiest way to get setup is this:
Setup a wallet on a secure machine that you own.
Generate 10,000 bitcoin addresses and put them in a database
When a user clicks deposit, assign their account one of the addresses.
Use bitcoin daemon with bloom filter or use an API to check for deposits and credit them when they confirm.
Process withdrawals yourself manually.
If you use an API be sure that you trust the owner as the API could provide you with fake data and potentially make fake deposits. Additionally check all deposits yourself before processing withdrawals.