Not sure where to start: Cycling though functions of one button with another button

I'm putting together a prop right now from scratch. It's a TNG cricket phaser that I designed and printed at home. I've assembled all the guts I hope I need to pull this off. Right now I'm facing down the programming. I'm mostly a novice on that end, having pieced together code for various light and sound projects in the past, but nothing like this. Here is where I need some feasibility advice and a gentle push in the right direction.
The phaser has three buttons, an indicator consisting of eight neopixels, and an emitter that is also a neopixel. Button 1 with be a power button with a momentary switch on a latching circuit connected to a battery charger. No programming needed there. Button 2 will do several things:

  1. With a quick press is will increase the light on the indicator incrementally from 1 to 8 and then back to one.
  2. With each increase in the "setting" the lights and sound will change when button 3, the trigger is pressed. For some settings there will be an on press and release action. Some settings will active and end with the press of the trigger. Some will only sustain as long as the trigger is pressed down. There will also be a change in the lighting of the emitter.
  3. When button 2 is long pressed a light and sound sequence with happen on its own without button three being pressed.

So, is this all possible? And are there tutorials out there that can help? I've been looking at cycles and button monitoring and they seem to want a four pin button. I only have two pin buttons at the moment.

Enumerate and describe "some."

There will be eight settings.
1, 2, and 3 will play a sound and fade in and out the emitter to completion whether the trigger is still depressed or released. These are "single shot" settings. Like a bullet fired.
4 through 8 with play a sound and fade in and light the emitter for as long as the trigger is depressed. When the trigger is released the sound will end, and another sound will play and the emitter will fade out. These are "sustained beams" like a cutting or heating beam. The first sound will be the beam. The second sound will be a fade out sound.

Yes... but you need nine neopixels

Yes.
https://docs.arduino.cc/built-in-examples/digital/Button/

https://docs.arduino.cc/learn/programming/audio/

I noticed no movement on this, so I figured you did not offer enough payment to make "your" project and were stuck. Here is a basic "push button LED blink" sketch

For simulation on WOKWI.COM

click for sketch.ino
// https://forum.arduino.cc/t/not-sure-where-to-start-cycling-though-functions-of-one-button-with-another-button/1222796/2

#include <FastLED.h>

#define ROWS 1 // rows of neopixels
#define COLS 9 // columns per row
#define NPIX (ROWS * COLS) // number of neopixels
#define MATRIX_PIN 2 // DIO
#define MAXBRIGHT 255 // 0 to 255

byte buttonPin[] = {11, 12};
byte nButtons = sizeof(buttonPin) / sizeof(buttonPin[0]);
byte setting, buttonState;

CRGB led[NPIX];

void setup() {
  Serial.begin(9600);

  for (int i = 0; i < nButtons; i++) {
    pinMode(buttonPin[i], INPUT_PULLUP);
  }

  FastLED.addLeds<WS2812B, MATRIX_PIN, GRB>(led, NPIX);
  FastLED.setBrightness(MAXBRIGHT); // Adjust the brightness value as needed
  FastLED.clear(); // clear pixel buffer
  led[0] = CRGB(255, 0, 0); // setting = 1
  FastLED.show(); // display cleared buffer
}

void loop() {
  for (int i = 0; i < nButtons; i++) {
    buttonState = digitalRead(buttonPin[i]); // read buttons

    // search for "blink without delay" or "interrupts" for a better debounce
    delay(50); // debounce

    if (!buttonState) { // a button was pressed
      switch (i) { // this button was pressed
        case 0: // select button
          if (setting > 7) // if count is greater than array,
            setting = 0; // reset count
          setting++; // else increase count
          break;
        case 1: // trigger button
          emitter();
          break;
        default: break; // if neither button is pressed
      }
      indicator(setting);
    }
  }
}

void indicator(int lights) {
  for (int i = 0; i < lights; i++) {
    FastLED.clear(); // clear at each change
    led[i] = CRGB(0, 0, 0);
  }
  FastLED.show();
  for (int i = 0; i < lights; i++) {
    led[i] = CRGB(255, 0, 0);
    FastLED.show();
  }
}

void emitter() { // this would be better using millis() timing rather than delay()
  for (int i = 0; i < 4; i++) { // flash four times
    led[8] = CRGB(255, 255, 0); // emitter on
    FastLED.show();
    delay(100);
    led[8] = CRGB(0, 0, 0); // emitter off
    FastLED.show();
    delay(100);
  }
}
click for diagram.json
{
  "version": 1,
  "author": "Anonymous maker",
  "editor": "wokwi",
  "parts": [
    { "type": "wokwi-arduino-nano", "id": "nano", "top": -4.8, "left": -0.5, "attrs": {} },
    {
      "type": "wokwi-neopixel-matrix",
      "id": "ring2",
      "top": -147.48,
      "left": -2.88,
      "attrs": { "pixleate": "1", "rows": "1", "cols": "9" }
    },
    { "type": "wokwi-vcc", "id": "vcc1", "top": -95.24, "left": 163.2, "attrs": {} },
    { "type": "wokwi-gnd", "id": "gnd1", "top": 67.2, "left": 133.8, "attrs": {} },
    {
      "type": "wokwi-pushbutton",
      "id": "btn1",
      "top": -63.8,
      "left": -9.4,
      "rotate": 180,
      "attrs": { "color": "green" }
    },
    {
      "type": "wokwi-pushbutton",
      "id": "btn2",
      "top": -111.8,
      "left": -9.4,
      "rotate": 180,
      "attrs": { "color": "green" }
    },
    {
      "type": "wokwi-text",
      "id": "legendservo1",
      "top": -48,
      "left": -48,
      "attrs": { "text": "TRIG" }
    },
    {
      "type": "wokwi-text",
      "id": "legendservo2",
      "top": -96,
      "left": -48,
      "attrs": { "text": "SET" }
    }
  ],
  "connections": [
    [ "nano:2", "ring2:DIN", "green", [ "v-9.6", "h9.6", "v-124.8" ] ],
    [ "vcc1:VCC", "nano:5V", "red", [ "v134.4", "h-48" ] ],
    [ "gnd1:GND", "nano:GND.1", "black", [ "v-9.6", "h-37.9" ] ],
    [ "nano:GND.2", "ring2:GND", "black", [ "v-96", "h-28.8" ] ],
    [ "vcc1:VCC", "ring2:VCC", "red", [ "v38.4", "h9.6" ] ],
    [ "btn2:1.l", "nano:11", "green", [ "h19.2", "v67.2", "h-57.6" ] ],
    [ "btn1:1.l", "nano:12", "green", [ "h19.2", "v19.2", "h-67.2" ] ],
    [ "nano:GND.2", "btn1:2.l", "black", [ "v0" ] ],
    [ "nano:GND.2", "btn2:2.l", "black", [ "v0" ] ]
  ],
  "dependencies": {}
}

What in the world does this mean?

It means this...

Start with reading the title of your topic.