Is it okay to start using Iron Ruby and Iron Python in production systems?
Yes. I am responsible for a software system that runs 24/7/365. Not Life-Or-Death critical, but lots-of-money critical. And it uses IronPython, although not much of - mostly little scriplets for things that are easier to do in a dynamic language. That means: It works, it doesn't crash your process or eat insane amounts of memory for no good reason. But the user base and the "language community" are far smaller than e.g. C#, so it might be harder to find help online.
Add: About the "MS dropped Iron*"-news: I really wouldn't care to much about that. There are many good languages that aren't actively developed by Microsoft. As long as there is active development, as long as it does what you want it to do and as long as you can find support if you can't understand what's going on, you should be fine. But that's probably more a matter of taste than a technical point.
Also, are there any additional requirements for hosting them?
For IronPython 1.0 (which is still usable) you only need two assemblies. For 2.0, you also need the DLR assemblies, but neither of them are very big or have any external dependencies (that I'm aware of).
And, for the bonus points, given that F# is a functional programming language in the same way that Python is, is there any advantage to using one over the other within the .NET framework?
As delnan said, F# is a functional language, Python is not. Python is a multiparadigm language that supports some functional programming concepts like lambda expressions or list comprehensions, but so does C#. F# and Python are really very different beasts.
The main differences are:
- F# is compiled to IL by the F# compiler (it's not a dynamic language), IronPython can be compiled or interpreted at runtime
- F# is statically typed with type inference, Python is dynamically typed (type checking is done at run time)
- F# is a functional language: It supports things like pattern matching, higher-order functions and -types, metaprogramming. It's really great if you need to implement a highly complex algorithm that can be easier implemented in a functional language, and you want to interface with C# code. (The last part is my personal view.)
- Python is primarily a OOP/imperative language. It's really great for adding scripting to an existing C# application. (The last part is my personal view.)
If you tell us more about what you want to do, maybe we can give you more specific input or suggest other alternatives.