Is it feasible to make Custom Instruction Sets?
Yes, of course! You can make anything you like! (Seriously) :) I assume that you have specific definitions in mind for "custom" and "instruction set". By "custom," to me that implies it's an instruction set not implemented on a known piece of hardware. A custom instruction set probably really implies a custom CPU architecture. (This leads to the answer to your last question, which I'll get to.) If you have a different definition of "custom," then you should share it. By "instruction set" I assume you mean commands that are similar in function and scope to existing CPU instruction sets (as opposed to something more extremely different or exotic). But in either case, the answer is still "yes".
How do I emulate them?
Erik's very informative answer has offered verious perspectives on this question. I will focus on a specific aspect. Assuming you are thinking of a custom instruction set that operates in the context of a standard von Neumann architecture that runs in a linear array of memory with a program counter, then your emulate would be a piece of software that pretends to be the CPU. As such, you would:
- Define variables that represent the state of the CPU: a PC (program counter), registers (if your custom instruction set supports them), CPU status bits (if your custom instruction set and architecture uses them - likely it would), stack pointer (if your instruction set and architecture has a stack), etc.
- Simulate the operation of your instructions and architecture. To do this you have to think about how your instruction set gets started. For example, some CPUs start at a specific memory location when they power up. Maybe yours would do something similar. You would define an array in your emulation software that represents the memory of your custom CPU. When your emulation starts (your custom CPU powers on) you would initialize your program counter and other state variables to their initial condition (defined by you) and start accessing instructions from memory (your array) just like a CPU would (fetch/execute cycle).
Do I need specific hardware if I really want to run it? How do I get this hardware?
If it's a custom instruction set, then I would think the hardware to execute it directly doesn't exist, at least by my definition of "custom" (otherwise, in what way is it custom?). My definition of "instruction set" is that it consists of instructions that are "close to the hardware", i.e., in one-to-one correspondence with the low level operations that the hardware directly knows how to execute. But as already noted, you can execute the instructions with your emulator. :)
In response to additional question in the comments.
But is there any way to make my own hardware? (easily if possible :)
Yes, there is of course a way to design and create the hardware needed to run a custom instruction set. Is it easy? It depends upon your skill level. You can find resources online on how to design a basic computer from scratch. Although the individual concepts are not difficult to understand for a basic CPU, it's not a trivial undertaking since there are lots of pieces to implement. You would be basically designing your own computer, from scratch.
If you're interested in this topic from a hardware perspective, I highly recommend looking up Ben Eater on YouTube. He has numerous excellent instructional videos discussing the creation of the various pieces of a CPU.