x86 and x64 simply refer to a family of processors and the instruction set they use. In general, x86 is 32-bit, and x64 is 64-bit. All modern processors are 64-bit and thus can allocate additional memory and perform faster operations.
x86 is a 32-bit instruction set, x86_64 is a 64-bit instruction set. The term x86 was derived from the fact that early successors to the Intel 8086 also had names ending in "86".
In the past, x86 was a 16-bit architecture. Today it only exists as 32-bit architecture. AMD continued that trend into the realm of 64-bits. x64 is actually more correctly "x86-64", the 64-bit extension of x86. Both of these improvements helped to lower the cost of computers and to increase their performance. These are the reasons why x86 and x64 are one of the most essential concepts in computing today.
64-bit processors can run both 32-bit programs and 64-bit programs.
On a 64-bit Windows, you can either use, since x86 will run in legacy mode. On a 32-bit Windows, you should only use x86. For Linux, you should select appropriately use x86 for a 32-bit OS, and x64 for a 64-bit OS.
If you see a folder called "Program Files (x86)", it means that you are running a 64-bit version of Windows. That folder contains the programs installed that are 32-bit. You regular "Program Files" will hold your 64-bit applications.
Whenever a program is running, it will be allocated some amount of RAM. The amount of RAM allocated to it depends on the operating system and its the CPU's architecture. A 64-bit architecture can allocate, in theory, 4,294,967,296 times more memory than a 32-bit.
Extra memory isn't the only reason to have a 64-bit computer. 64-bit processors can deal with data in 64-bit chunks, which is obviously more efficient than moving it around in 32-bit chunks.
Developers should be only creating 64-bit apps these days, as this is the current standard. In the future 32-bit apps and 32-bit operating systems might stop being supported.