Maxwell‘s equations in differential form are easy to write down and apply to a model of a structure. You just have to decide what parts of the structure correspond to what kind of boundary conditions. Unfortunately the differential equations are hard to solve analytically in any but the simplest arrangement. The good news is you don’t have to solve them. The differentials tell what happens in the next little snippet of time and your computer doesn’t mind repeatedly calculating little baby steps of time sequentially. So it turns out solving Maxwell’s equations numerically one little dt step at a time is pretty easy to do given a fair bit of computational horse power.
The most prevalent software for this purpose is called Lumerical and it is routinely used in the industry to design photonic crystals and other photonic devices.
I am not going to argue what is the absolute best or most efficient, but I think for somebody just getting started the finite-difference frequency-domain (FDFD) method is awesome. Of all the methods, I think it is the easiest to learn and implement and can be used to simulate a huge variety of devices and configurations. Here is a new book that teaches FDFD in MATLAB for the complete beginner. The book includes multiple photonic crystal simulations with complete MATLAB codes provided and explained.
FWIW, I tend to use the MIT open source offerings: meep for dynamic solutions to Maxwell's equations, and mpb for solving for photonic bandstructures.
The user interface side can take a little getting used to, but there are no problems with restrictive data formats; so you do post-processing any way you like.