My idea is to have a strip of lights that will turn on when you touch the sensor with the magnet, then turn off when you touch it again with the magnet. I don't want something that will turn off when you move the magnet away. I did my research and it looks like I need a latching hall effect sensor. Is this right?No, you don't need a special hall effect sensor.
Your software (your Arduino "sketch") "knows" if the LEDs are on or off. So, you just need to change the state whenever the magnet is detected.
I recommend that you start-over without the Instructables code. Figure-out how to detect the Hall Effect sensor and turn an LED on & off first. And, the easiest thing to do is use the Pin-13 LED that's already on the board. Then, maybe you can mix your new code with the Instructables code.
I'd also suggest you figure-out how to do this with a plain-old switch before adding the Hall Effect sensor (a momentary switch would best-simulate the Hall Effect sensor). With any project, you've got to break it down into manageable parts.
The trick to what you are trying to do is an if-statment and some other logic... In English, "If the LED is on AND the Hall Effect sensor is detected, turn it off... If the LED is off AND the Hall Effect sensor is detected, turn it on." Of course, the computer doesn't understand English, so you have to translate that to C++.
The two concepts that make programming really useful are Conditional Branching (if-statements and other similar logic that makes it possible for a computer to "make decisions") and Loops (doing thing over-and-over, often until some condition is reached.)
I don't want to scare you , but programming is NOT easy! Yeah, it's easy to make an LED blink, and the Arudino is a pretty good way to learn some basic programming, but a 4-year Computer Science degree is pretty-much a "programming degree". And, professional computer programmers make more mistakes in a day than most other professionals! Because, it ain't easy! And with the the Arduino, you've got to learn at least some electronics too, and that's a whole different subject!
I suggest you read-through the Programming Reference to get an idea of what the basic functions do. There's not a lot to it, but you won't understand it all the first time through (and you won't remember it all) but it's still a good idea to read-through it a couple of times. Technical subjects are like math... You could probably read your math book in a week, but you have to read it several times and try-out the problems, and it takes a whole semester before you understand it all.
And try some of the simple examples (depending on what hardware you have) and try to understand how the code works (and how the hardware works). I assume that you don't understand all of the code in the Instructables example, and that's OK... Start with something simpler.
When you do start writing your own code, start with a basic "framework" program like the Blink LED example. I almost always start with that. Then, write one or two lines of code at at time and compile & test before continuing. If you try to write the whole program at once, it usually won't work. You can have one little error and the compiler might give you many error messages that don't make sense to you. The compiler doesn't know what you are trying to do, it just knows that what you are doing doesn't make sense in C++.
Besides making sure that there are no syntax errors (things that don't make sense in the C++ language), you can have logical errors. In other words, the program may run but it doesn't do what you want.
One thing that's really helpful for testing & debugging is to send messages to the Serial Monitor so you can "see" what the program is doing. For example, you can send out a message that says "start delay", and "end delay", etc.
The biggest mistake beginning programmers make is to try and write the whole program at once. But, it's not as easy as writing the lines in-order... For example, if you erase the last half of an existing program, it won't compile. You have to "build' or "develop" your program in a way that it always makes sense, especially in a way that makes sense to the compiler.
Of course, experienced programmers write more than one or two lines at at time, but they are usually working on big programs so they don't write the whole thing at once... They develop, debug, and test, one section at a time.
You'll probably find that you need to debounce your Hall Effect sensor. To a human, it might look like it's turning on & of "cleanly", but at some point it will be "half-on" and if the processor is reading the sensor a few million times per second, it might read 100 on/off cycles and your program may not behave as expected.
That's one of those things you don't have to start with... You can add the debouncing as you "develop" and debug your code. The easiest thing is to simply add a little delay (probably a few milliseconds) each time through the loop.