Spreads are simple once you get the hang of it. Usually, I do spreads last because I can see what my team is weak to. When on an archetype like HO, most spreads will be 252/252 spreads. However, balance and bulky offense are much more complicated, as you need to strike a balance (no pun intended) between attacking power and taking the hits you need to take. When I'm doing this, I look at all three of benchmarks, jump points and overall bulk calculations. With something like Wobbuffet which has its bulkiest spread be maxing both defenses, it is easy because I can just put enough HP to hit a benchmark, lower the defensive stat as much as I need to minimise the EV consumption when hitting the benchmark (e.g. for wobb to take an ada LO bish's KOff from full, you need to move 12 SpD EVs into HP and then shift 4 of the EVs from defense to special defense to minimise consumption). Then, I go for speed benchmarks. Using the wobb example from before, I need to retain my benchmark - so i move the 20 EVs needed to outpace neutral Quag out of SpD, and I have my spread sorted.
For other Pokemon, such as Amoonguss, getting an optimal spread is much harder due to maximum overall bulk not being a simple 252/252 spread. A nice tool I commonly use for pokemon like these is
http://pokestudio.altervista.org/defevs.php because it gives you the most optimal spread with a number of multipliers (barring shit like Fur Coat, most of these modifiers can be substituted by +1 or whatever if the item isn't visible on the side bar). Plug its gen 6 base stats into the calculate, enter the number of remaining EVs (i.e. after power+speed benchmarks are accounted for) and click calculate to get a starting point. Then you can tailor it to live a hit from there. The balance bar at the bottom can also be used to get a rough idea as to what more catagory-oriented spreads should look like, making it easier to tailor the right EVs to, say, live 2 HP Ices from Thundurus (no particular pokemon, just plucking something out of thin air here lol). From there, just follow the steps in the paragraph above this one.
Offensively, EVing to KO something and/or outpace something can be important - especially for mixed attackers like Hoopa-U, Thundurus or Kyurem-B. Some pokemon have incredibly important speed benchmarks, such as Thundurus sitting at 111/tying with opposing Thundurus - making max speed important and leaving you with 256 EVs to work with - while others have weird stats which are between 2 more important benchmarks, such as Landorus-T being between base 100s and Heatran/Bisharp/whatever - making speed less important and, as a result, allowing you to invest more into your other attacking stat/bulk. Contrary to defensive, a general rule of thumb is to get your speed benchmark right
before going for your power benchmarks, as it lets you gauge the maximum investment that is worth aiming for, and make good use of the damage calculator and speed tier resource to do these.
When you EV to KO something/live a hit with a positive nature and are 1-2 stat points below the jump point, it is often a good idea to invest a little more than you need so as to hit a jump point (a point where you get 2 points for 4 evs instead of 1), making your spread more efficient by giving you an extra stat point (or an effective 512 EVs). However, much more than 1-2 stat points below isn't often worth it because it can potentially compromise too many points from your other stats to the point of going for the jump point being pointless.
I hope I've been helpful :)