just check the store's total items using store.getCount(). If its above 0 then your store has loaded, else not! getCount retrieves the cached records, and getTotalCount() retrieves the total items in the data set.
1) You can use it at whenever you need to perform any operation with the store or any component the store is attached too. No need of an event.
2) If the store is loaded with no data, the function will return 0. In this case you'll need to use the load event.
If you want to perform an operation after the store has loaded, then use the 'load' event of the store and write the business logic inside the load event function. Whenever the store gets loaded the event will be fired. The load event will be fired each time the store is loaded. So if you do call reload() function, the load event will be fired again.