It depends on how many resources you have and how they perform with your game. I recommend to start with a simple solution, which means loading all the assets at the beginning, so you can use them anytime. Once the game performs slowly because of the memory problems consider writing some kind of manager, which will load assets in a smarter way.
What I recommend is to ready all your assets through a "dummy" manager, which will at the beginning just load all the resources and provide them. But your code will treat it as a black box providing assets. If you need to make changes, then you just change the manager and not game code. Once the game gets slower, you can add simple tricks to your manager. For example, it can watch what assets are requested per level and pre-load them for this level and drop those that are not used, which would be the first optimization I would do in your case.